坐峰怀雪灬

路漫漫其修远兮,吾将上下而求索。
随笔 - 58, 文章 - 0, 评论 - 14, 阅读 - 15万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

2021年8月24日

携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。
环境准备:centos ==> 7+,mysql ==> 5.7+,java ==> 1.8+
环境搭建:
1
2
3
4
yum -y install wget //下载安装包需要的命令
yum -y install java //java环境
yum -y install lrzsz  //上传下载功能
yum -y install unzip zip  //压缩和解压zip所需的组件

一、MySQL安装:

安装步骤
1、检测下系统有没有自带的mysql:
1
yum list installed | grep mysql

如果已经有的话执行命令卸载已经安装的mysql

1
yum -y remove mysql-libs.x86_64
2、先到mysql官网下载5.7的安装包,download-yum选择Red Hat Enterprise Linux 7 / Oracle Linux 7 (Architecture Independent), RPM Package , 该文件只是将mysql添加到yum库中,现在从官网下载默认的安装版本是8.0,需要禁用到8.0选择5.7
1
wget http://repo.mysql.com//mysql57-community-release-el7-7.noarch.rpm
如果没有wget命令可以通过如下命令安装
1
yum install wget -y
3、添加选择yum源:
1
yum localinstall mysql57-community-release-el7-7.noarch.rpm
#查看可用和默认的yum源,这里默认的就是5.7
1
yum repolist all | grep mysql
4、安装mysql:
1
yum install mysql-community-server
5、启动mysql:
#启动
1
service mysqld start
#
查看安装版本
1
mysqladmin --version
#
查看状态
1
service mysqld status
6、查看默认密码
1
grep -n password /var/log/mysqld.log
7、修改初始密码,允许远程访问
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#本地连接数据库,输入刚刚获取的密码
mysql -u root -p
#修改默认密码,默认密码后续操作会报错
SET PASSWORD = PASSWORD('Mysql@123456');
#选择mysql库
use mysql;
#更新权限
update user set Host='%' where User='root';
生效:
FLUSH PRIVILEGES;
 
vim etc/my.cnf 添加 character-set_server=utf8 否则会有乱码
  
8、配置防火墙打开3306端口
#查看3306端口是否开启
firewall-cmd --permanent --query-port=3306/tcp
#允许外部访问3306端口(可设置固定IP或IP段访问某一特定端口)
firewall-cmd --zone=public --add-port=3306/tcp --permanent
#删除3306端口
firewall-cmd --zone=public --remove-port=3306/tcp --permanent
#配置生效
systemctl restart firewalld.service
#查看防火墙状态
firewall-cmd --state
#启动firewall
systemctl start firewalld.service
#置开机自启:
systemctl enable firewalld.service
# 重启防火墙:
systemctl restart firewalld.service
查看防火墙设置开机自启是否成功:
systemctl is-enabled firewalld.service;echo $?
#查看已开启的firewall端口:
netstat -ntlp 或:firewall-cmd --list-ports
下载程序包地址:
1
2
3
源代码地址:https://github.com/ctripcorp/apollo/
已编译完成程序包:https://github.com/ctripcorp/apollo/releases
config数据库和portal数据库SQL地址:https://github.com/ctripcorp/apollo/tree/master/scripts/sql
 
本次使用已编译完成的程序包
1
2
3
wget    https://github.com/ctripcorp/apollo/releases/download/v1.9.0/apollo-adminservice-1.9.0-github.zip
wget    https://github.com/ctripcorp/apollo/releases/download/v1.9.0/apollo-configservice-1.9.0-github.zip
wget    https://github.com/ctripcorp/apollo/releases/download/v1.9.0/apollo-portal-1.9.0-github.zip
若下载速度较慢,可修改系统host文件:140.82.114.4 github.com 199.232.5.194 github.global.ssl.fastly.net
 
二、程序接口名称及功能说明
名称
功能说明
接口服务对象
Portal
提供Web界面供用户管理配置
配置管理员
Admin Service
提供配置管理接口
Portal
Config Service
提供配置获取接口
Apollo客户端程序
Eureka
Config Service和Admin Service会向Eureka注册服务,并保持心跳
Config和Admin
Meta Server
Meta Server从Eureka获取Config Service和Admin Service的服务信息
Portal和Client
 
Meta Server和Config Service是在一个JVM进程中Eureka和Config Service是在一个JVM进程中
 
三、部署分布说明
  • Portal单独使用 ApolloPortalDB 库,可以独立部署
  • Config ServiceAdmin Service共用 ApolloConfigDB 库,建议部署至同一台服务器。
  • Portal部署在生产环境的机房,通过它来直接管理FAT、UAT、PRO等环境的配置
  • Config ServiceAdmin Service在每个环境都独立部署,使用独立的数据库(提供给相对应环境的客户端程序调用配置接口)
 
四、默认支持环境说明
名称
说明
DEV
开发环境
FAT
测试环境,相当于alpha环境(功能测试)
UAT
集成环境,相当于beta环境(回归测试)
PRO
生产环境
 
 
五、安装Config ServiceAdmin Service
  • 导入数据库
1
2
mysql -uroot -p -e 'CREATE DATABASE IF NOT EXISTS ApolloConfigDB DEFAULT CHARACTER SET = utf8mb4'
mysql -uroot -p ApolloConfigDB < ApolloConfigDB.sql
  • 安装程序
1
2
3
mkdir -p /wwwroot/{apollo-config,apollo-admin}
unzip apollo-adminservice-1.9.0-github.zip -d /wwwroot/apollo-admin/
unzip apollo-configservice-1.9.0-github.zip -d /wwwroot/apollo-config/
  • 修改配置文件
1
2
3
4
5
6
7
8
9
10
11
vim /wwwroot/apollo-config/config/application-github.properties
######修改config server数据库地址以及用户名密码
spring.datasource.url = jdbc:mysql://10.2.1.241:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username = root
spring.datasource.password = Mysql@123456
  
vim /wwwroot/apollo-admin/config/application-github.properties
######修改admin server数据库地址以及用户名密码
spring.datasource.url = jdbc:mysql://10.2.1.241:3306/ApolloConfigDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username = root
spring.datasource.password = Mysql@123456
  • 启动程序
1
2
3
4
/wwwroot/apollo-config/scripts/startup.sh
/wwwroot/apollo-admin/scripts/startup.sh
chmod 777 start.sh
chmod 777 shutdown.sh
  • 开启防火墙
1
2
3
firewall-cmd --permanent --zone=public --add-port=8080/tcp
firewall-cmd --permanent --zone=public --add-port=8090/tcp
firewall-cmd --permanent --zone=public --add-port=8070/tcp
  • 检查启动情况
  • 打开网页 http://10.2.1.241:8080,查看是否有APOLLO-CONFIGSERVICE以及APOLLO-ADMINSERVICE成功注册
  • 使用命令curl -X GET "http://10.2.1.241:8080/eureka/apps"检查已注册服务 
六、同一套环境中部署Config ServiceAdmin Service集群
  • 修改数据库配置文件
    1
    2
    3
    4
    ###修改 `ApolloConfigDB`.`ServerConfig`表中 `Value`选项
    ###将原 http://localhost:8080/eureka/ 修改为内网IP,(Eureka服务Url,多个service以英文逗号分隔)
    ###例如:
    UPDATE `ApolloConfigDB`.`ServerConfig` SET `Value` = 'http://10.2.1.241:8080/eureka/,http://10.2.1.242:8080/eureka/' WHERE `Id` =
  • 部署并启动
  • 在10.2.1.241以及10.2.1.242服务器上部署config及admin服务
  • 启动config及admin服务
  • 检查启动情况
  • 打开网页http://10.2.1.241:8080以及http://10.2.1.242:8080,两台程序都服务注册成功即可。
  • 使用命令 curl -X GET "http://10.2.1.241:8080/eureka/apps"检查已注册服务. 
七、安装配置portal
  • 导入数据库
1
2
mysql -uroot -p -e 'CREATE DATABASE IF NOT EXISTS ApolloPortalDB DEFAULT CHARACTER SET = utf8mb4'
mysql -uroot -p ApolloPortalDB < ApolloPortalDB.sql
  • 安装程序
1
2
mkdir -p /wwwroot/apollo-portal
unzip apollo-portal-1.9.0-github.zip -d /wwwroot/apollo-portal/
  • 修改配置文件
  • 修改数据库配置文件
1
2
3
4
5
vim /wwwroot/apollo-portal/config/application-github.properties
######修改portal数据库地址以及用户名密码
spring.datasource.url = jdbc:mysql://10.2.1.241:3306/ApolloPortalDB?characterEncoding=utf8&serverTimezone=Asia/Shanghai&useSSL=false
spring.datasource.username = root
spring.datasource.password = Mysql@123456
修改访问环境配置文件
1
2
3
vim /wwwroot/apollo-portal/config/apollo-env.properties
######修改各环境的eureka访问地址,仅添加需要的环境,如果eureka配置集群模式,填入地址,使用逗号隔开。(更建议使用域名+负载均衡)
dev.meta=http://10.2.1.241:8080,http://10.2.1.242:8080
修改数据库配置
 
配置统一存储在 ApolloPortalDB.ServerConfig 表中
1
2
3
4
5
6
7
###允许支持多环境
`apollo.portal.envs`键值中,如需管理多个环境的话,使用逗号隔开
例如 "DEV,FAT,UAT,PRO"
###修改部门列表信息
`organizations`键值中,按照样例修改可选部门信息
###超级管理官
`superAdmin`键值中,拥有超级管理员权限用户名,如需添加多个,用逗号隔开
  • 启动程序
1
2
3
/wwwroot/apollo-portal/scripts/startup.sh
chmod 777 start.sh
chmod 777 shutdown.sh
八、访问配置管理页面访问域名 : http://10.2.1.241:8070 默认用户名 : apollo默认密码 : admin
  • 增加配置请查看官方git说明书

posted @ 2021-08-24 16:00 坐峰怀雪灬 阅读(264) 评论(0) 推荐(1) 编辑

2018年6月19日

摘要: 使用方法: 部署get_weixin_code.html(页面在附件里)至你的微信授权回调域名的目录下; 使用方式类似于直接通过微信回调的方式,只是将回调地址改成了get_weixin_code.html所在的地址,另外省去了response_type参数(因为它只能为code)以及#wechat_ 阅读全文

posted @ 2018-06-19 18:17 坐峰怀雪灬 阅读(913) 评论(0) 推荐(0) 编辑

2017年11月29日

摘要: 在进行实体转换操作的时候如果需要在对两个实体之间两个属性字段差不多相同的类要进行一个互相的转换,我们要把a对象的所有字段的值都复制给b对象,我们只能用b.属性=a.属性来写,如果属性字段太多的话,就要写很多行复制语句,麻烦还容易漏掉一些,这个时候可以利用c#的反射来实现复制。我们可以写这样一个利用泛 阅读全文

posted @ 2017-11-29 23:17 坐峰怀雪灬 阅读(455) 评论(0) 推荐(0) 编辑

2017年11月21日

摘要: 最近负责的一些项目开发,都用到了微信支付(微信公众号支付、微信H5支付、微信扫码支付)。在开发的过程中,在调试支付的过程中,或多或少都遇到了一些问题,今天总结下,分享,留存。代码在文章结尾处,有需要的同学可以下载看下。 先说注意的第一点,所有支付的第一步都是请求统一下单,统一下单,统一下单,请求UR 阅读全文

posted @ 2017-11-21 17:29 坐峰怀雪灬 阅读(5440) 评论(7) 推荐(0) 编辑

2017年10月12日

摘要: 简介 Charles其实是一款代理服务器,通过成为电脑或者浏览器的代理,然后截取请求和请求结果达到分析抓包的目的。该软件是用Java写的,能够在Windows,Mac,Linux上使用。开发iOS都在Mac系统上吧,安装Charles的时候要先装好Java环境。这么好的软件不是免费的,官网要好几十刀 阅读全文

posted @ 2017-10-12 21:20 坐峰怀雪灬 阅读(1942) 评论(0) 推荐(0) 编辑

2017年9月5日

摘要: 由于楼主学的是C#,所以目前做的百度短信API是C#版的,废话不说了,直接上代码。 阅读全文

posted @ 2017-09-05 00:58 坐峰怀雪灬 阅读(662) 评论(0) 推荐(0) 编辑

2017年8月2日

摘要: 如果一个网页很长,那么该页面的加载时间也会相应的较长。而这里给大家介绍的这个jQuery插件scrollLoading的作用则是,对页面元素进行动态加载,通俗的说就是滚到哪就加载到哪,屏幕以下看不见的就不用加载了。这样还可以在一定程度上节省服务器资源。该插件作者的网页将该插件的功能和使用方法描述的非 阅读全文

posted @ 2017-08-02 22:00 坐峰怀雪灬 阅读(1508) 评论(0) 推荐(0) 编辑

2017年3月1日

摘要: .NET(C#)生成指定长度的随机字符串的通用方法,此方法可以指定字符串的长度,是否包含数字,是否包含符号,是否包含小写字母,是否包含大写字母等, 源码: 读取数据: 写入数据: 阅读全文

posted @ 2017-03-01 15:20 坐峰怀雪灬 阅读(4753) 评论(0) 推荐(1) 编辑

2017年1月16日

摘要: 说到AJAX就会不可避免的面临两个问题,第一个是AJAX以何种格式来交换数据?第二个是跨域的需求如何解决?这两个问题目前都有不同的解决方案,比如数据可以用自定义字符串或者用XML来描述,跨域可以通过服务器端代理来解决。 但到目前为止最被推崇或者说首选的方案还是用JSON来传数据,靠JSONP来跨域。 阅读全文

posted @ 2017-01-16 16:01 坐峰怀雪灬 阅读(423) 评论(0) 推荐(0) 编辑

2017年1月9日

摘要: 客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVariables.Get("Remote_Host").ToString(); 客户端浏览器IE: Request.Browser 阅读全文

posted @ 2017-01-09 16:33 坐峰怀雪灬 阅读(6855) 评论(0) 推荐(1) 编辑

点击右上角即可分享
微信分享提示