consui(二)集群配置

consul集群搭建:
一、软件安装
Linux 环境下载zip包然后直接解压,然后把解压的文mv consul /bin
检验安装是否成功,查看版本
[[email protected] ~]consul -v
Consul v1.1.0
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)
Consul 软件下载地址:https://www.consul.io/downloads.html
默然仓库地址:https://yumrepo.b0.upaiyun.com/
查看版本:
[[email protected] raft]# consul -v
Consul v1.1.0
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)
[[email protected] raft]#

二、集群配置:
集群配置思路需要考虑问题:
搭建consul,需要先理解conusl的server leader定制选举
1、通过配置文件中设置"bootstrap_expect":的
2、先手动自定主,然后其他两个节点join进来

方式1:命令启动的方式
启动方式:/usr/bin/consul agent -config-file=/etc/consul/consul.json
第一个节点:
./consul agent -server -bootstrap-expect 2 -data-dir /opt/consul-data -node=node1 -bind=ip1 -ui -client=0.0.0.0 &
其他节点:
./consul agent -server -bootstrap-expect 2 -data-dir /opt/consul-data -node=node2 -bind=ip2 -join= ip1 -ui -client=0.0.0.0 &
./consul agent -server -bootstrap-expect 2 -data-dir /opt/consul-data -node=node3 -bind=ip3 -join= ip1 -ui -client=0.0.0.0 &

方式2:配置文件的方式:
[[email protected] ~]# cat /etc/consul/consul.json
{
"data_dir": "/opt/consul-data",
"log_level": "INFO",
"server": true,
"bootstrap_expect": 1,
"retry_join": ["172.16.36.67","172.16.36.50"],
"retry_interval": "3s",
"rejoin_after_leave": true,
"domain": "ycgwl.com",
"client_addr":"0.0.0.0",
"ui": true,
"datacenter": "dc1"
}
注意:leader是"bootstrap_expect": 1,
Flower:是“"bootstrap_expect": 2,

查看集群节点是够已经正常启动:
[[email protected] ~]# consul members
Node Address Status Type Build Protocol DC Segment
node1 172.16.36.56:8301 alive server 1.1.0 2 dc1 <all>
node2 172.16.36.67:8301 alive server 1.1.0 2 dc1 <all>
node3 172.16.36.50:8301 alive server 1.1.0 2 dc1 <all>

命令的方式启动leader:
./consul agent -server –bootstrap-expect 1 –data-dir /tmp/consul -node node1 –bind=10.10.49.193 –ui –client 0.0.0.0 -dc dc1 &
i. server: 以server身份启动。
ii. bootstrap-expect:集群要求的最少server数量,当低于这个数量,集群即失效。经测试,低于这个数量也不影响访问
iii. data-dir:data存放的目录,更多信息请参阅consul数据同步机制
iv. node:节点id,在同一集群不能重复。
v. bind:监听的ip地址。
vi. client 客户端的ip地址
vii. & :在后台运行,此为linux脚本语法
viii. ui:启动webui,端口8500
viiii.:-config-dir 指定服务配置文件的目录(这个目录下的所有.json文件,作为服务配置文件读取)

访问ip:8500/ui,出现如下页面,则启动成功
Consul agent-ui
http://172.16.37.39:8500/ui/

命令启动:
nohup /usr/bin/consul agent -config-file=/etc/consul/consul.json &
定制consul的服务端system启动方式:
[email protected]]# cat /usr/lib/systemd/system/consul.service
[Unit]
Description=consul
After=network

[Service]
Type=simple
PIDFile=/usr/local/consul/consul.pid
ExecStart=/usr/bin/consul agent -config-file=/etc/consul/consul.json
ExecReload=/usr/bin/consul reload

[Install]
WantedBy=multi-user.target

定制consul的客户端system启动方式:
https://www.linuxidc.com/Linux/2014-11/109232p2.htm
https://www.linuxidc.com/Linux/2014-11/109232.htm
[[email protected] consul]# cat consul.service
[Unit]
Description=consul
After=network

[Service]
Type=simple
PIDFile=/opt/consul-data/consul.pid
ExecStart=/opt/consul agent -join 172.16.37.39 -data-dir=/opt/consul-data -datacenter=zongbu
ExecReload=/opt/consul reload

[Install]
WantedBy=multi-user.target

服务管理:
systemctl enable consul.service
systemctl status consul.service
systemctl enable consul
service consul start
service consul sttop
service consul stop

server agent进程:
[[email protected] opt]# netstat -tulnp | grep consul
tcp 0 0 172.16.36.67:8300 0.0.0.0: LISTEN 23384/consul
tcp 0 0 172.16.36.67:8301 0.0.0.0:
 LISTEN 23384/consul
tcp 0 0 172.16.36.67:8302 0.0.0.0: LISTEN 23384/consul
tcp6 0 0 :::8500 :::
 LISTEN 23384/consul
tcp6 0 0 :::8600 ::: LISTEN 23384/consul
udp 0 0 172.16.36.67:8301 0.0.0.0:
 23384/consul
udp 0 0 172.16.36.67:8302 0.0.0.0: 23384/consul
udp6 0 0 :::8600 :::
 23384/consul

clinet agent 进程:
[[email protected] ~]# netstat -tulnp | grep consul
tcp 0 0 127.0.0.1:8500 0.0.0.0: LISTEN 29980/./consul
tcp 0 0 127.0.0.1:8600 0.0.0.0:
 LISTEN 29980/./consul
tcp6 0 0 :::8301 ::: LISTEN 29980/./consul
udp 0 0 127.0.0.1:8600 0.0.0.0:
 29980/./consul
udp6 0 0 :::8301 :::* 29980/./consul
[[email protected] ~]#

各个通信端口作用:
• 8500,客户端http api接口,web页面管理
• 8600,客户端DNS服务端口
• 8400,客户端RPC通信端口
• 8300,集群server RPC通信接口
• 8301,集群DC内部通信接口
• 8302,集群DC之间通信接口

查看leader角色:
[[email protected] raft]# consul operator raft list-peers
Node ID Address State Voter RaftProtocol
node1 016a92e7-b9ff-1dd7-f758-38fb3b2a9088 172.16.37.39:8300 leader true 3

列出所有数据中心:
[[email protected] ~]# consul catalog datacenters -http-addr=IP:8500
zongbu
[[email protected] ~]#

列出所有节点:
[[email protected] system]# consul catalog nodes
Node ID Address DC
node1 0ffe6841 172.16.36.56 dc1
node2 a6b9b6d7 172.16.36.67 dc1
node3 23eb28a2 172.16.36.50 dc1

列出所有服务:
[[email protected] opt]# ./consul catalog services -http-addr=IP:8500
Consul

列出数据中心:
[[email protected] system]# consul catalog datacenters
dc1
zongbu

命令查看consul节点:
curl 172.16.37.35:8500/v1/catalog/nodes

把client节点加到server:
把172.16.37.10节点加入到consul
./consul join -wan clientIP -http-addr=http://leaderIP:8500

遇到问题1、网卡有多个,网卡冲突
报错解决:Multiple private IPv4 addresses found. Please configure one with ‘bind’ and/or ‘advertise’.
[[email protected] ~]#
[[email protected] ~]# /usr/bin/consul agent -config-file=/etc/consul/consul.json
==> Multiple private IPv4 addresses found. Please configure one with ‘bind‘ and/or ‘advertise‘.
[[email protected] ~]# ps -ef | grep flanne
root 664 1 0 09:57 ? 00:00:00 /usr/bin/flanneld -etcd-endpoints=http://172.16.36.63:2379 -etcd-prefix=/k8s/network --iface=eth0
root 4721 710 0 11:08 pts/0 00:00:00 grep --color=auto flanne
https://blog.csdn.net/yelllowcong/article/details/79602151

遇到问题2、system服务启动不了:consul软件路径写错了
[[email protected]]# systemctl enable consul.service
Failed to execute operation: Bad message
[[email protected]]# sudo systemctl enable consul.service
Failed to execute operation: Bad message
[[email protected]]# systemctl -f enable consul.service
Failed to execute operation: Bad message
[[email protected]]# ls /usr/lib/systemd/system/consul.service
/usr/lib/systemd/system/consul.service
经过检查,结果发现:opt/consul-agent/consul路径写错了少了consul-agent这级目录
[[email protected] ~]# ls /usr/lib/systemd/system/consul.service
/usr/lib/systemd/system/consul.service
[[email protected] ~]# cat /usr/lib/systemd/system/consul.service
[Unit]
Description=consul
After=network

[Service]
Type=simple
PIDFile=/opt/consul-data/consul.pid
ExecStart=/opt/consul-agent/consul agent -join 172.16.36.50 -data-dir=/opt/consul-data
ExecReload=/opt/consul reload

[Install]
WantedBy=multi-user.target

后续:
• consul 采用DNS或者http获取服务信息,没有主动通知,需要自己轮训获取
• consul之间如何做服务健康检查?
• https://www.cnblogs.com/wangzhisdu/p/7762715.html
• dig解析:linux下提供nslookup,dig命令的软件就是 bind-utils
• consul的ACL控制:
• http://www.xiaomastack.com/2016/06/11/cousnl-acl/

博客参考:
• 博客参考地址:http://www.cnblogs.com/Summer7C/p/7327109.html
• https://blog.csdn.net/viewcode/article/details/45915179
• https://blog.csdn.net/buxiaoxia/article/details/69788114
• https://blog.coding.net/blog/intro-consul?type=hot
• https://segmentfault.com/a/1190000008471221?from=timeline

RPC协议:
https://blog.csdn.net/wangyunpeng0319/article/details/78651998

consul相关资源
• 可执行程序下载地址: https://www.consul.io/downloa...
• 官方说明文档: https://www.consul.io/docs/in...
• api说明文档: https://godoc.org/github.com/...
• golang api代码位置:github.com/hashicorp/consul/api
• Consul官方文档:https://www.consul.io/docs/install/index.html

原文地址:https://www.cnblogs.com/ExMan/p/11869721.html

时间: 2024-11-05 10:37:51

consui(二)集群配置的相关文章

ELK5.3+Kafka集群配置

[一]资源准备 # 3台4C*8G, 安装Zookeeper.Kafka.Logstash--Broker(input: filebeat; output: Kafka) 10.101.2.23 10.101.2.24 10.101.2.25 # 2台4C*8G, 安装Logstash--Indexer(input: Kafaka; output: Elasticsearch) 10.101.2.26 10.101.2.27 # 3台8C*16G, 安装Elasticsearch 10.101.

WildFly8.1(JBoss)+mod_cluster(Apache)集群配置

继上次使用mod_jk进行了Apache+JBoss集群配置之后,由于JBoss5.1启动过于缓慢,所以开始尝试使用最新的WildFly8.1进行配置(WildFly就是JBoss,在JBoss7之后改名). 系统环境: Windows 7 SP1(Windows Server 2003已测试,WildFly会有未知问题) 软件环境: JDK 7+(一定要使用7以上,否则WildFly不支持) WildFly 8.1.0(http://wildfly.org/downloads/) mod_cl

MySql 集群配置

MYSQL CLUSTER方案介绍 本文的大致框架来自罗志威.黄川的报告, 在它的基础上进行简化和修改一些bug并且添加了主从复制的章节,最后做出该文档 MySQL Cluster 是MySQL适合于分布式计算环境的高实用.高冗余版本.它采用了NDB Cluster 存储引擎,允许在1个 Cluster 中运行多个MySQL服务器.现在mysql cluster 被独立出来, 作为一个专门的产品进行运营, mysql-server-5.6+ 就不在存在对mysql cluster的支持,需要独立

直接路由的高可用LVS集群配置

 直接路由的高可用LVS集群配置: 调度服务器IP:(106.3.43.240)192.168.11.100,节点服务器分别为:192.168.11.101,192.168.11.102 一.安装ipvsadmin: 1.yum -y install ipvsadmin(推荐用第一种方法) 2.下载http://www.linuxvirtualserver.org/software/,找到相应的版本: 注意对应自己的内核版本 ipvsadm-1.24.tar.gz tar zxvf ipvs

集群配置工具之conga:web配置简易RHCS

RHCS,红帽的集群套件,至于原理性能什么的我这里也不多说了,很复杂也很无趣,而且网上一百遍介绍RHCS的文章,通常也是只是在用同一种方式同一种语言同一种思路说同一件事,有的甚至拼音的错误也是一样的,很无聊,大家有兴趣可以自己搜.好了,吐槽完毕,开始今天的实验! 准备: 一台控制台(node1.xue.com),需要安装luci和ansible; 三台做集群,及被控制机(node2.xue.com.node3.xue.com.node4.xue.com),需要安装ricci: 配置好yum源:

apache + tomcat 负载均衡分布式集群配置

Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问量过大,就会出现服应用务器崩溃的情况,这个时候怎么办,难道就只能去重启服务器吗?好,如果是一般的小型公益网站到也无所谓,但如果是比如像大型航空公司售票等电子商务网站,每天每小时都有大量的订单业务,如果这些售票系统一旦崩溃后,再去重启,这些时间和客户的损失就直接会影响到航空公司的利益,这些损失如何去避

转载 Tomcat集群配置学习篇-----分布式应用

Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问量过大,就会出现服应用务器崩溃的情况,这个时候怎么办,难道就只能去重启服务器吗?好,如果是一般的小型公益网站到也无所谓,但如果是比如像大型航空公司售票等电子商务网站,每天每小时都有大量的订单业务,如果这些售票系统一旦崩溃后,再去重启,这些时间和客户的损失就直接会影响到航空公司的利益,这些损失如何去避

Redhat6.5下MySQL5.6集群配置完整版

1.准备三台服务器 2.为三台机器分别安装Linux操作系统(Oracle Linux / RHEL 6.5 x86_64bit) 3.分别IP地址 管理节点      192.168.1.110         (负责管理整个集群) SQL节点       192.168.1.111         (负责操作数据库) SQL节点       192.168.1.112         (负责操作数据库) 数据节点      192.168.1.111         (负责存储数据) 数据节

Linux系统运维之Zookeeper集群配置

一.简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效.功能稳定的系统提供给用户. 1. ZooKeeper的基本运转流程 1.选举Leader,选举机制大于1/2. 2.同步数据. 3.选举Leader过程中算法有很多,但要达到的选举标准是一致的. 4.Leader要具有最高的执行ID,类似root权限. 5