环境准备
linux Centos 7.2
Docker
Consul入门
Docker构建Consul
consul的安装路径是在https://releases.hashicorp.com,我们使用Docker安装
建立Docker安装脚本Dockerfile,放置在目录/usr/docker/consul下
FROM alpine
MAINTAINER peter "1052060702@qq.com"
#配置环境变量consul版本
ENV CONSUL_VERSION=1.4.3
ENV HASHICORP_RELEASES=https://releases.hashicorp.com
#安装consul
RUN apk upgrade && \
apk add net-tools && \
apk add wget && \
apk add unzip && \
wget ${HASHICORP_RELEASES}/consul/${CONSUL_VERSION}/consul_${CONSUL_VERSION}_linux_amd64.zip && \
unzip consul_${CONSUL_VERSION}_linux_amd64.zip && \
rm -rf consul_${CONSUL_VERSION}_linux_amd64.zip && \
mv consul /usr/local/bin
VOLUME /consul/data
#预开放端口
EXPOSE 8300
EXPOSE 8301 8301/udp 8302 8302/udp
EXPOSE 8500 8600 8600/udp
脚本中使用aipine,这个比较小的操作系统安装在容器中,比较节省空间。
运行Docker脚本,生成容器镜像
cd /usr/docker/consul
docker build -t counsl .
安装成功后,截图如上,生成了名为consul的镜像
创建自定义网络
docker network create --subnet=192.167.1.0/16 swoftNetwork
网络节点规划
容器名称 | 容器IP地址 | 映射端口号 | 宿主机IP地址 | 服务运行模式 |
consul-server1 | 192.167.1.10 | 8501 -> 8500 | 172.27.0.8 | Server Master |
consul-server2 | 192.167.1.11 | 8502 -> 8500 | 172.27.0.8 | Server |
consul-server3 | 192.167.1.12 | 8503 -> 8500 | 172.27.0.8 | Server |
consul-client1 | 192.167.1.13 | 8504 -> 8500 | 172.27.0.8 | Client |
构建容器
docker run -itd --name consul_server1 -p 8501:8500 --network swoftNetwork --ip 192.167.1.10 consul
docker run -itd --name consul_server2 -p 8502:8500 --network swoftNetwork --ip 192.167.1.11 consul
docker run -itd --name consul_server3 -p 8503:8500 --network swoftNetwork --ip 192.167.1.12 consul
docker run -itd --name consul_client -p 8504:8500 --network swoftNetwork --ip 192.167.1.13 consul
构建成功如上图。
进入节点服务器,启动Consul
docker exec -it consul_server1 sh
consul agent -server -ui -node=consul_server1 -bootstrap-expect=1 -bind=192.167.1.10 -data-dir /consul/data -join=192.167.1.10 -client 0.0.0.0
注意第一个的agent参数有些不同,所有的agent都加入到192.167.1.10,同时192.167.1.10提供对外ui访问。
参数含义:
agent 代理模式
-server 表示启动的是一个服务
-client 启动客户端
-bootstrap-expect 1 表示等待多少个节点再启动,这里1个,就是自己一个就启动了
-node=ali_1 就是给consul服务起个别名为ali_1
-bind=192.167.1.10 绑定内网ip
-advertise:通知展现地址用来改变给集群中的其他节点展现的地址,用于外网通讯
-data-dir /opt/data1 数据存储目录为/opt/data1
-ui 启动默认ui界面
-client consul绑定在哪个client地址上,这个地址提供HTTP、DNS、RPC等服务,默认是127.0.0.1,可指定允许客户端使用什么ip去访问
如上图 ,节点服务器启动consul成功。
另外2台Consul节点服务器可按上述方法启动。
docker exec -it consul_server2 sh
consul agent -server -ui -node=consul_server2 -bootstrap-expect=3 -bind=192.167.1.11 -data-dir /consul/data -join=192.167.1.10 -client 0.0.0.0
docker exec -it consul_server3 sh
consul agent -server -ui -node=consul_server3 -bootstrap-expect=3 -bind=192.167.1.12 -data-dir /consul/data -join=192.167.1.10 -client 0.0.0.0
启动3个consul服务器,加入leader节点192.167.1.10,这样就组成了consul服务器集群。
加入consul客户端
docker exec -it consul_client sh
consul agent -client -ui -node=consul_client1 -bind=192.167.1.13 -data-dir=/consul/data -join=192.167.1.10 -client 0.0.0.0
进入consul客户端节点,启动consul
docker exec -it consul_client sh
consul agent -client -node=client1 -bind=192.167.1.13 -data-dir=/consul/data -join=192.167.1.10 -client 0.0.0.0
建立集群
使用192.167.1.10作为主机,将其他节点加入它,建立集群
#docker exec -it consul_server1 sh
#consul join 192.167.1.11
#consul join 192.167.1.12
成功后,即可将此3个节点组成consul集群环境。
进入consul控制台,查看节点情况
浏览器访问:http://ip:8501/ui/
启动成功,查看节点运行正常。
持续完善,待续...