consul集群搭建:
一、软件安装
Linux 环境下载zip包然后直接解压,然后把解压的文mv consul /bin
检验安装是否成功,查看版本
[root@node1 ~]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/
查看版本:
[root@node1 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)
[root@node1 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:配置文件的方式:
[root@node1 ~]# 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,

查看集群节点是够已经正常启动:
[root@node1 ~]# 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启动方式:
root@node1]# 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
[root@node1 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进程:
[root@node2 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 进程:
[root@etcd ~]# 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
[root@etcd ~]#

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

查看leader角色:
[root@node1 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

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

列出所有节点:
[root@node2 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

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

列出数据中心:
[root@node2 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’.
[root@etcd ~]#
[root@node1 ~]# /usr/bin/consul agent -config-file=/etc/consul/consul.json
==> Multiple private IPv4 addresses found. Please configure one with 'bind' and/or 'advertise'.
[root@node1 ~]# 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软件路径写错了
[root@node1]# systemctl enable consul.service
Failed to execute operation: Bad message
[root@node1]# sudo systemctl enable consul.service
Failed to execute operation: Bad message
[root@node1]# systemctl -f enable consul.service
Failed to execute operation: Bad message
[root@node1]# ls /usr/lib/systemd/system/consul.service
/usr/lib/systemd/system/consul.service
经过检查,结果发现:opt/consul-agent/consul路径写错了少了consul-agent这级目录
[root@etcd ~]# ls /usr/lib/systemd/system/consul.service
/usr/lib/systemd/system/consul.service
[root@etcd ~]# 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

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

  1. redis相关笔记(二.集群配置及使用)

    redis笔记一 redis笔记二 redis笔记三 1.配置:在原redis-sentinel文件夹中添加{8337,8338,8339,8340}文件夹,且复制原8333中的配置 在上述8333配 ...

  2. Ubuntu 14.04中Elasticsearch集群配置

    Ubuntu 14.04中Elasticsearch集群配置 前言:本文可用于elasticsearch集群搭建参考.细分为elasticsearch.yml配置和系统配置 达到的目的:各台机器配置成 ...

  3. MySQL Cluster 7.3.5 集群配置实例(入门篇)

    一.环境说明: CentOS6.3(32位) + MySQL Cluster 7.3.5,规划5台机器,资料如下: 节点分布情况: MGM:192.168.137. NDBD1:192.168.137 ...

  4. Spring+quartz 实现定时任务job集群配置

    为什么要有集群定时任务? 因为如果多server都触发相同任务,又同时执行,那在99%的场景都是不适合的.比如银行每晚24:00都要汇总营业额.像下面3台server同时进行汇总,最终计算结果可能是真 ...

  5. redis集群配置

    客户端分片 程序端实现 代理proxy,访问proxy,proxy指定redis保存位置. Twemproxy Redis cluster ,会造成一部分数据丢失,无中心化1.将数据自动切分(spli ...

  6. window xp Apache与Tomcat集群配置--转载

    转载地址:http://www.cnblogs.com/obullxl/archive/2011/06/09/apache-tomcat-cluster-config.html 一. 环境说明 Win ...

  7. Tomcat集群配置学习篇-----分布式应用

    Tomcat集群配置学习篇-----分布式应用 现目前基于javaWeb开发的应用系统已经比比皆是,尤其是电子商务网站,要想网站发展壮大,那么必然就得能够承受住庞大的网站访问量:大家知道如果服务器访问 ...

  8. Linux+Apache+Tomcat集群配置

    参考: http://blog.csdn.net/bluishglc/article/details/6867358# http://andashu.blog.51cto.com/8673810/13 ...

  9. WildFly 9.0.2+mod_cluster-1.3.1 集群配置

    一.配置背景 最近使用WildFly 9.0.2作为中间件开发系统,给客户不熟的时候需要使用集群来进行负载均衡,一开始想到是使用Nginx.但是只通过Nginx使用 ip_hash 模式没有做到ses ...

随机推荐

  1. 01_搭建新浪云SAE

    Step1:注册新浪云计算平台用新浪微博登陆新浪云计算平台,网址:http://sae.sina.com.cn/ 登陆成功之后会跳转到安全设置页面,安全设置页面要填写的东西比较多,需要注意:安全设置里 ...

  2. 常见的 eslint 基本报错信息

    Missing semicolon 缺少分号 Missing space before opening brace 左大括号前缺少空格 Trailing spaces not allowed 不允许尾 ...

  3. mysql 运算操作符

    Name Description AND, && Logical AND = Assign a value (as part of a SET statement, or as par ...

  4. UOJ272. 【清华集训2016】石家庄的工人阶级队伍比较坚强 [FWT]

    UOJ 思路 很容易想到\(O(3^{3m}\log T)\)的暴力大矩乘,显然过不了. 我们分析一下每次转移的性质.题目给的转移方程是填表法,我们试着改成刷表法看看-- 发现好像没啥用. 注意到游戏 ...

  5. 《挑战30天C++入门极限》新手入门:C/C++中数组和指针类型的关系

        新手入门:C/C++中数组和指针类型的关系 对于数组和多维数组的内容这里就不再讨论了,前面的教程有过说明,这里主要讲述的数组和指针类型的关系,通过对他们之间关系的了解可以更加深入的掌握数组和指 ...

  6. vuex(用了vue就上了一条不归路的贼船)

    一.Vuex是干什么用的? 它是用于对复杂应用进行状态管理用的(官方说法是它是一种状态管理模式). “杀鸡不用宰牛刀”.对于简单的项目,根本用不着Vuex这把“宰牛刀”.那简单的项目用什么呢?用Vue ...

  7. vue-router 的原理

    1. hash 修改的时候:history.pushState('名字', null, '/xxx') || location.hash = '/xxx' 回退的时候:window.addEventL ...

  8. luogu_P3313 [SDOI2014]旅行

    传送门 Solution 第二次学习可持久化线段树 打了一道裸题来练习一下-- 对于每个宗教都可以开一个主席树 基础操作 树剖lca Code  #include<bits/stdc++.h&g ...

  9. namenode 优化 mv慢的问题

    问题现象 问题描述 公司业务程序需求每30分钟mv 一万多个文件,如果三十分钟之内当前的文件内容没有全部移动,程序报错并且停止. 分析 通过分析,发现在启动balancer和不启动balancer的情 ...

  10. avalon在公共页面里面写的功能,怎么让某些页面不引用到这个方法和html?

    每一个页面都用用到head.html里面的东西,但是有些页面我不想调用这个js,但是在head.html我已经调用了怎么办? 比如我是这个页面不需要去调用  https://*******/mytry ...