1、搭建集群环境
192.168.32.144 n1 server1
192.168.32.192 n2 server2
192.168.21.120本机 n3 server3
实验步骤:
1、以-bootstrap方式启动192.168.32.144环境:
./consul agent -server -bootstrap -data-dir /opt/consul/data -config-dir=./conf -node=n1 -bind=192.168.32.144
2、启动192.168.32.192环境,并加入集群:
./consul agent -server -data-dir /opt/consul/data -config-dir=./conf -node=n2 -bind=192.168.32.192
./consul join 192.168.32.144
3、启动192.168.21.120环境,并加入集群:
consul agent -server -data-dir e:\consul\data -node=n3 -bind=192.168.21.120
consul join 192.168.32.144
4、在每个节点上执行查询命令,查看cluster状态及哪个节点是leader:
./consul members
./consul info
5、验证自动选举:
通过 consul leave 停掉第一个节点,观察第二个和第三节点的选举与状态变化。
6、再将第一个节点加入集群,注意此时不能有 -bootstrap 选项:
./consul agent -server -data-dir /opt/consul/data -node=n1 -bind=192.168.32.144
./consul join 192.168.32.192
2、配置服务
192.168.32.144 n1 server1
192.168.32.192 n2 server2
192.168.21.120本机 c1 client1
实验步骤:
1、在192.168.32.144及192.168.32.192上分别安装tomcat及rcp-webclient(略)
2、分别在opt/consul目录下创建conf目录,并在conf目录中创建service.json文件,如下所示:
{
"service": {
"name": "web1",
"tags": ["master"],
"address": "127.0.0.1",
"port": 8080,
"checks": [
{
"http": "http://localhost:8080/rcp-webclient/ping.txt",
"interval": "10s"
}
]
}
}
启动时分别加上-config-dir选项,如:
./consul agent -server -bootstrap -data-dir /opt/consul/data -config-dir=./conf -node=n1 -bind=192.168.32.144
./consul agent -server -data-dir /opt/consul/data -config-dir=./conf -node=n2 -bind=192.168.32.192
3、查看节点及服务:
curl -s http://localhost:8500/v1/catalog/nodes
curl -s http://localhost:8500/v1/catalog/services
4、client方式启动本机的consul,并加入集群:
consul agent -data-dir e:\consul\data -node=c1 -bind=192.168.21.120
consul join 192.168.32.144
通过本机浏览器访问:
http://localhost:8500/v1/catalog/nodes
http://localhost:8500/v1/catalog/services
http://localhost:8500/v1/catalog/service/web1
5、健康检查
查看service是否正常可用
http://localhost:8500/v1/health/state/any
本机的tomcat正常运行和停掉后,查询会得出不同的结果。
3、其他
3.2 注意事项
1、linux采用0.6.3 64位的版本,经试验验证suse 9 32位的环境无法正常启动;
2、验证集群环境的选举,三台服务器才能生效,两台服务器无法成功;
3、退出时要采用 consul leave 命令,避免产生极端异常;
4、集群环境重新启动时,需要将各个节点的data目录清空,否则可能无法成功搭建集群环境。
3.1 测试web ui
下载UI程序,放置在/opt/consul/consul_0.6.3_web_ui目录下,增加-ui-dir选项启动consul,如下所示:
./consul agent -server -bootstrap -data-dir /opt/consul/data -config-dir=./conf -node=n1 -bind=192.168.32.144 -ui-dir=/opt/consul/consul_0.6.3_web_ui
浏览器访问示例:
3.3 验证8500端口只能本机访问,不能远程访问
Consul启动后,在其他的服务器上通过浏览器发现无法访问,如192.168.21.120上无法访问192.168.32.144上的服务,如下示例:
http://192.168.32.144:8500/v1/catalog/services
通过netstat -ano|grep 8500查看,发现8500端口监听的地址为本地地址(127.0.0.1),这是导致其他机器无法访问的原因。
3.4 如何开通consul的远程web访问
操作步骤如下所示:
conf目录下增加一个config.json,如下所示:
{
"addresses": {
"http": "192.168.32.144"
}
}
通过下述命令重新启动:
./consul agent -server -bootstrap -data-dir /opt/consul/data -config-dir=./conf -node=n1 -bind=192.168.32.144
通过netstat -ano|grep 8500查看,发现8500端口监听的地址为192.168.32.144,允许其他机器访问
分析原因,本机启动一个agent client,监听本机的最可靠,如果监听远端服务器地址,应该监听哪一个呢,万一监听的服务器宕机了呢