本文在3个vbox构成的与真实环境近似的本地网络环境中测试consul的可用性,以及记录使用方法。
安装 centos 7 的 vbox 虚拟机,安装和配置方法参考本站《centos7在vbox中最小化安装以及共享文件夹设置实践 》一文,在虚拟机中安装consul,安装方式见consul.io。到下载页面下载对应操作系统的本本,对于 linux 而言只需要将下载后解压出来的二进制文件拷贝到/usr/bin
目录下面,并给予可执行权限即可:chmod +x consul
。
将此虚拟机导出再导入以创建另外两个虚拟机,也可以用链接复制的方式创建另外两个虚拟机(推荐)。
确保机器之间可联通。最快捷的办法是在网络设置中为虚拟机设置两个网卡,网卡1选 网络地址转换(NAT),网卡2选 仅主机(Host-Only)网络,如下两图:
一般而言会通过dhcp分配一个与vbox虚拟网卡网段一致的ip如下图所示的192.168.56.101 再以同样的方法设置第二个虚拟机其ip应该是192.168.56.102第三个则是192.168.56.103顺序累加。此ip可在主机中ping通,虚拟机相互之间也可以ping通,consul需要绑定在这个ip上:
为方便后续描述这里定义一下主机:
sev1:192.168.56.101
sev1:192.168.56.102
sev1:192.168.56.103
1
|
consul agent -server -bootstrap-expect 1 -data-dir /www/consul -node=agent-one -bind=192.168.56.101 -config-dir /etc/consul.d -client 0.0.0.0 -ui
|
- -bootstrap-expect 指明预计要加入的其他节点的数量,这里为1表名以单节点启动而不进行服务选举,后续节点中不需要此参数因为不是以server角色启动
- -data-dir 指定数据存储目录。
- -node 指定节点名称。
- -bind 指定绑定ip,consul将监听此ip。
- -config-dir 指定配置文件目录。
- -client 0.0.0.0 -ui 启动ui界面,注意如果没有-client 0.0.0.0 这一段web界面将只能通过127.0.0.1访问。
1
|
consul agent -data-dir /www/consul -node=agent-two -bind=192.168.56.102 -config-dir /etc/consul.d
|
1
|
consul agent -data-dir /www/consul -node=agent-thr -bind=192.168.56.103 -config-dir /etc/consul.d
|
此时创建的3个consul节点还不能互通需要手动加入,在有server角色的sev1中执行命令(实际上可以在任意节点加入其它节点)。
1
|
consul join 192.168.56.102 & consul join 192.168.56.103
|
如果报错如下,检查防火墙是否允许8301端口,或者直接关闭防火墙:
1
2
3
4
|
Error joining address '192.168.56.102': Unexpected response code: 500 (1 error(s) occurred:
* Failed to join 192.168.56.102: dial tcp 192.168.56.102:8301: getsockopt: no route to host)
Failed to join any nodes.
|
显示如下:
1
2
3
4
5
|
[root@m m]# consul members
Node Address Status Type Build Protocol DC Segment
agent-one 192.168.56.101:8301 alive server 1.0.2 2 dc1 <all>
agent-thr 192.168.56.103:8301 alive client 1.0.2 2 dc1 <default>
agent-two 192.168.56.102:8301 alive client 1.0.2 2 dc1 <default>
|