Consul调研

 

 

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.144192.168.32.192上分别安装tomcatrcp-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

 

4client方式启动本机的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 注意事项

1linux采用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

浏览器访问示例:

http://192.168.32.144:8500/

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,监听本机的最可靠,如果监听远端服务器地址,应该监听哪一个呢,万一监听的服务器宕机了呢

 

 

猜你喜欢

转载自jackiee-cn.iteye.com/blog/2290887