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. biiset用法

    C++ bitset--高端压位卡常题必备STL 以下内容翻译自cplusplus.com,极大地锻炼了我的英语能力. bitset存储二进制数位. bitset就像一个bool类型的数组一样,但是有 ...

  2. 再做一遍floyed

    #include<bits/stdc++.h> #define R register int using namespace std; const int inf=0x3f3f3f3f; ...

  3. Pytest权威教程24-Pytest导入机制及系统路径

    目录 Pytest导入机制和sys.path/PYTHONPATH 包中的测试脚本及conftest.py文件 独立测试模块及conftest.py文件 调用通过python -m pytest调用p ...

  4. vue指令大全~~~

    是的,这里有很全的vue指令使用~ 1.简单的vue应用 vue作为一个mvvm框架,想想为什么叫做mvvm? Model是负责数据的存储, View负责页面的展示 Model View 负责业务逻辑 ...

  5. 移动端滚动选择器mobileSelect.js

    一款多功能的移动端滚动选择器,支持单选到多选.支持多级级联.提供自定义回调函数.提供update函数二次渲染.重定位函数.兼容pc端拖拽等等.. 特性 原生js移动端选择控件,不依赖任何库 可传入普通 ...

  6. 使用IDEA运行CAS5.3服务器

    在上节中,我们运行CAS服务器是打成war包在tomcat中进行运行,这节介绍在IDEA中运行CAS服务器. 1.下载CAS 模板 Overlay Template,我这里使用 Apereo CAS ...

  7. longitudinal models | 纵向研究 | mixed model

    A longitudinal study refers to an investigation where participant outcomes and possibly treatments o ...

  8. GB28181技术基础之3 - RTP

    一. RTP协议 实时传输协议 RTP(Real-time Transport Protocol)是一个网络传输协议,它是由IETF的多媒体传输工作小组1996年在RFC 1889中公布的,后在RFC ...

  9. AndoridSQLite数据库开发基础教程(8)

    AndoridSQLite数据库开发基础教程(8) 添加索引 索引是一种通过预先排序和对表的一个或多个列构建索引表来优化数据库查找的手段.下面为表添加索引,操作步骤如下: (1)在打开的数据库中,单击 ...

  10. python清理docker-harbor的多余镜像

    # coding: utf-8 from operator import itemgetter from urllib import parse import requests import date ...