consul部署---多数据中心部署

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都配置在前段配置文件中,这会带来一下几个问题:

  • 需要配置N个后端的网络位置,加大配置的复杂性
  • 后端的网络位置变化,都需要改变每个前端的配置
  • 在后端数量大的情况下,负载均衡需要前端程序内部解决,加重了前端程序的负担
  • 后端出现故障(网络、设备、程序)时前端无法获得反馈,仍然将数据发送给后端,出现数据丢失的情况.
    consul部署---多数据中心部署_第1张图片
    加入服务发现模块之后,后端A、B、C把当前自己的网络位置注册到服务发现模块,服务发现就以Key/Value的方式记录下,K一般是服务名,V就是IP:port。服务发现模块定时对注册的服务以轮询的方式进行健康检查。前端在调用服务A、B、C的时候,就根据服务发现模块下当前已有的网络位置,调用已有的服务。
    consul部署---多数据中心部署_第2张图片
    集中配置管理
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/20190122170742890.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyOTEyMzM5,size_16,color_FFFFFF,t_70
    将程序的配置参数以KEY/VALUE的方式配置在界面上,配置后的KEY/VALUE将存储在consul内部的“kv store”中,程序从“kv store”拉取属于自己的配置写入配置文件。以此方式管理配置文件,只需要在界面上修改某行参数,再重启相应的程序即可获取最新的配置参数
    概念:数据中心与Gossip池
    官方示例图:

consul部署---多数据中心部署_第3张图片

每个数据中心可以视为一个地区(北上广),每个数据中心内存在一个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节点执行,将该节点所在数据中心加入其他数据中心

5.部署
安装前要求
consul部署---多数据中心部署_第4张图片

consul部署---多数据中心部署_第5张图片
百度云盘连接
https://pan.baidu.com/s/1q9JpBfKUyNE-H_S1a8UJ8g
所需要的文件

更改主机名脚本

consul部署---多数据中心部署_第6张图片
在每台服务器上创建目录把需要的安装包依赖包上传
[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
consul部署---多数据中心部署_第7张图片
修改server的配置文件
[root@server1consul]# vim /opt/consul/etc/systemd/consul-server.service
consul部署---多数据中心部署_第8张图片修改配置文件
cd /opt/consul/
./install.sh
进入目录 安装consul
systemctl restart consul-server
systemctl status consul-server
consul部署---多数据中心部署_第9张图片
启动成功
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
consul部署---多数据中心部署_第10张图片
编辑配置文件 (ensrypt的mak必须一样 ip是server的ip)
cd /opt/consul/
./install.sh
进入目录安装consul
systemctl restart consul-client
重启consul
systemctl status consul-client
consul部署---多数据中心部署_第11张图片
查看是否启动成功
consul members
在这里插入图片描述查看数据库test1的节点 client已经添加入数据库中

consul部署---多数据中心部署_第12张图片

consul部署---多数据中心部署_第13张图片
Web页面访问(server的ip+8500端口号)

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
consul部署---多数据中心部署_第14张图片编辑配置文件
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
在这里插入图片描述
添加成功
consul部署---多数据中心部署_第15张图片
刷新页面数据中心成了两个
6.多数据中心部署
consul部署---多数据中心部署_第16张图片
DC-1:

  • 全部为Server模
  • 一台server配置文件start_join自己的IP,并开启bootstrap模式,其余两台start_join到这一台
  • 其中一台启用UI,其它做备机
  • 界面编辑、修改KV
  • DC-2,DC-3向DC-1获取KV

DC-2、DC-3:

  • Server-A启用bootstrap模式
  • Client-B1~B* start_join Server-B
  • Client-C1~C* start_join Server-C
  • Server-B、Server-C、Server-A start_join Server-A
    ——————————————————————————
    在每台服务器上安装av_frag_rssb
    tar -zxf av_frag_rssb.tar.gz
    解压av_frag_rssb
    rm -rf /root/.bash_profile
    cp .bash_profile /root/
    删除原有的环境变量把新的环境变量复制过去
    rpm -ivh framework-1.0.6-1.el6.x86_64.rpm
    安装framework
    source /root/.bash_profile
    使环境变量立即生效
    cp libasmislog.so libsoqav_dedup.so /opt/MESA/lib/
    chmod 755 /opt/MESA/lib/libasmislog.so libsoqav_dedup.so
    复制两个依赖包到指定目录先,并给与执行权限
    cd /home/cries/av_frag_rssb/
    ldd av_rssb_maskey
    consul部署---多数据中心部署_第17张图片
    进入目录 并进行测试

7.管理配置文件详解
consul部署---多数据中心部署_第18张图片

在KEY/VALUE中创建配置文件目录(AV_RSSB_MAIN_CONF)

consul部署---多数据中心部署_第19张图片

进入刚创建的目录,创建配置文件对应的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 &
启动脚本
脚本启动后就会同步

你可能感兴趣的:(架构)