1.版本
Consul:0.9.3
系统:centos 7.4
2.Consul介绍
官方URL:
https://www.consul.io/
Consul各版本更新细节介绍:
https://github.com/hashicorp/consul/blob/v1.4.0/CHANGELOG.md
关于raft算法和gossip协议介绍:
https://www.backendcloud.cn/2017/11/12/raft-gossip/
3.consul的两个用途
服务注册与服务发现
以下图为例,以往的做法是将后端IP+Port都配置在前段配置文件中,这会带来一下几个问题:
每个数据中心可以视为一个地区(北上广),每个数据中心内存在一个LAN Gossip池,它包含数据中心的所有成员——client和server。
LAN池用于以下几个目的:
1、 成员关系运行,client自动发现server,减少配置量
2、 分布式的故障检测,允许故障检测的工作由整个集群承担,而不是集中在少数server上
3、 Gossip池允许可靠和快速的事件广播,比如leader选举。
多个数据中心根据consul
keygen构成一个集群,一个集群存在唯一一个WAN Gossip
池,所有的server都(应)加入 WAN
Gossip池,不论是哪个数据中心的。WAN池提供的成员关系,允许server执行跨数据中心请求。
概念:client与server
不管是client还是server,都是consul集群中的一个节点,在consul中,不存在传统的server管理client这样的概念,它们之间是平等的,client与server具体的区别如下:
Client:
这种模式下,所有注册到当前节点的服务会被转发到SERVER,本身是不持久化这些信息。
Server:
功能和client都一样,唯一不同的是,它会把所有的信息持久化的本地,这样遇到故障,信息是可以被保留的。
Server-leader:
负责同步注册的信息给其它的SERVER,同时也负责各个节点的健康监测
4**. 常用命令**
consul keygen 生成consul集群的key
consul info consul运行状态信息
consul monitor 查看consul运行日志
consul members 查看consul lan
gossip中的IP(同一DC中的server和client)
consul members -wan 查看consul wan
gossip中的IP(不同DC中的server)
consul snapshot save kv_bak.snap 备份KV
consul snapshot restore kv_bak.snap 导入备份的KV数据
consul join -wan x.x.x.x 在Server节点执行,将该节点所在数据中心加入其他数据中心
百度云盘连接
https://pan.baidu.com/s/1q9JpBfKUyNE-H_S1a8UJ8g
所需要的文件
更改主机名脚本
在每台服务器上创建目录把需要的安装包依赖包上传
[root@server1 ~]# mkdir /home/cries
[root@server1 ~]# cd /home/cries/
[root@server1 cries]# rz
安装consul
Server1 test1-server
tar -zxf consul_install_package.tgz -C /
解压consul包
ln /opt/consul/bin/consul /bin/
创建软链接
consul keygen
Consul命令 生成一个唯一的mak
cd /opt/consul/etc/consul/
vim config-server.json
修改server的配置文件
[root@server1consul]# vim /opt/consul/etc/systemd/consul-server.service
修改配置文件
cd /opt/consul/
./install.sh
进入目录 安装consul
systemctl restart consul-server
systemctl status consul-server
启动成功
consul members
查看数据中心test1节点
Server2 test1-client
tar -zxf consul_install_package.tgz -C /
解压consul安装包
ln /opt/consul/bin/consul /bin/
创建软连接
vim /opt/consul/etc/consul/config-client.json
编辑配置文件 (ensrypt的mak必须一样 ip是server的ip)
cd /opt/consul/
./install.sh
进入目录安装consul
systemctl restart consul-client
重启consul
systemctl status consul-client
查看是否启动成功
consul members
查看数据库test1的节点 client已经添加入数据库中
Server3 test2-server
tar -zxf consul_install_package.tgz -C /
解压consul安装包
ln /opt/consul/bin/consul /bin/
创建软链接
vim /opt/consul/etc/consul/config-server.json
编辑配置文件
cd /opt/consul/
./install.sh
进入目录安装consul
systemctl restart consul-server
重启consul
systemctl status consul-server
查看consul状态 看是否启动成功
去server1添加server3
consul join -wan 192.168.11.208
将server3添加到server1中(因为这两个不是一个数据中心)
consul members –wan
添加成功
刷新页面数据中心成了两个
6.多数据中心部署
DC-1:
DC-2、DC-3:
在KEY/VALUE中创建配置文件目录(AV_RSSB_MAIN_CONF)
进入刚创建的目录,创建配置文件对应的Section及配置参数
[DEBUG]
FileStorePath=./log/file/
FileStoreSwitch=0
FragSurveyInvalid=0
HlsAboffsetInMode=1
JSONLocalSwitch=0
[LOG]
AppName=av_rssb
FragLogLevel= 20
FragLogPath= ./log/frag.log
LogLevel= 30
LogPath= ./log/runtime.log
MediaCreateLogPath= ./log/media_create.log
MediaExpireLogPath= ./log/media_expire.log
RespLogPath= ./log/survey.log
StatCycle=30
StatFile=./log/rssb_stat.log
StatRemoteSwitch=1
StatServerIP=10.4.20.206
StatServerPort=8125
SysinfoCycle=30
SysinfoFile=./log/rssb_sysinfo.log
[NETWORK]
BizmanAckAccumulateNum=5
BizmanAckAccumulateTime=10
BizmanAckPort=22084
BizmanAckSmoothTime= 10
BizmanPort=22082
CPZMsgPort=22080
FwdIP=eth2
LocalIP=eth2
QDMsgPort=22080
UdpSendIP=127.0.0.1;127.0.0.1;
UdpSendIPNum=2
UdpSendPort=33082;33083
[SYSTEM]
AckSwitch=0
AsmisSwitch=0
BizmanQueueMaxnum=2000000
BizmanQueueMode=1
CPZTpye=0
IVISwitch=1
IndexQueryTime=10
IndexQueryTimerCbMaxNum=500
MediaHashElemNum=1048576
MediaHashExpireTime=300
MediaHashSize=65536
ModifyCapIPSwitch=1
RenewTimeMax=7200
RenewTimeMin=600
RenewTimeStep=6
ThreadNum=1
[VOIP]
VOIPFilterSwitch=0
VOIPFullLogIP=
VOIPFullLogIPNum=
VOIPFullLogPort=
VOIPLogLevel= 20
VOIPLogPath= ./log/voip.log
VOIPSurveyLogIP=
VOIPSurveyLogIPNum=
VOIPSurveyLogPort=
[WLB]
bfd_recv_port=0
capacity=32
cost=32
data_port=30000
health_check_interval=10
health_check_port=52100
user_tag=xx
wlb_group_name=xx
wlb_on=0
wlb_report_interval=10
wlb_topic=AV
对应的配置文件为av_frag_rssb/conf/main.conf,其中WIRED_INFO这个Section为自动生成,不需要配置,
#######################################
Test2同步test1的数据
cp consul-replicate /opt/consul/bin/
复制脚本到指定目录下
chmod 755 /opt/consul/bin/consul-replicate
给予权限
cd /opt/consul/bin/
./consul-replicate -prefix “AV_RSSB_MAIN_CONF@test1” &>/dev/null &
启动脚本
脚本启动后就会同步