微服务环境搭建(Kong+Consul+Swarm+Shipyard)

最近在做单体系统的微服务化拆分,划分好微服务边界就是编码,这部分工作和开发一样,但是微服务的部署环境可是比较麻烦,各种组件需要配置,捣鼓了3-5天终于捣鼓出来了。前端API Gateway选用Kong,服务注册用Consul,部署用Docker,容器的编排管理用Swarm,运维监测用Shipyard,一下为具体配置教程。


系统:Centos7

Docker:1.12

虚机节点三个:133.133.10.28

    133.133.10.30

    133.133.10.31

一、系统配置

1、安装系统-Centos7
2、配置静态网络
     vi /etc/sysconfig/network-scripts/ifcfg-ens3
     修改:BOOTPROTO=static
               ONBOOT=yes
     添加:IPADDR=172.8.1.211
               PREFIX=24
               GATEWAY=172.8.1.1
               DNS1=172.8.1.1
     重启:reboot
3、安装vim和网络工具
     yum install vim
     yum install net-tools


二、安装Docker

4、安装docker
4.1、编辑docker.repo文件,写入如下内容
    [root@registry ~]# vim /etc/yum.repos.d/docker-main.repo
    docker-main-repo]
    name=Docker main Repository
    baseurl=https://yum.dockerproject.org/repo/main/centos/7
    enabled=1
    gpgcheck=1
    gpgkey=https://yum.dockerproject.org/gpg
4.2、安装docker
    [root@registry ~]# yum update
    [root@registry ~]# yum install docker-engine
4.3、关闭防火墙和selinux
    [root@registry ~]# systemctl stop firewalld.service
    [root@registry ~]# systemctl disable firewalld.service
    [root@registry ~]# vi /etc/selinux/config
    修改 /etc/selinux/config 文件中的 SELINUX="" 为 disabled ,然后重启
4.4、增加tcp监听端口
    修改docker配置文件
    [root@registry ~]# vi /lib/systemd/system/docker.service
    ExecStart=/usr/bin/dockerd -H unix:///var/run/docker.sock -D -H tcp://0.0.0.0:2375
    保存退出
4.5、启动docker
    [root@registry ~]# systemctl start docker

可通过Docker info验证docker安装成功。


三、创建swarm集群

5、创建swarm管理节点(28)
[root@master ~]# docker swarm init --listen-addr 0.0.0.0:2377 --advertise-addr 192.168.20.113
输出(切记住token!!!):
Swarm initialized: current node (79l4eevt1sx63cw8ewb7xf1fh) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-53zfa8v239nibt9eum4buemmq3wkfjsrqjxbte9ay93i3xzlsn-8cch0txhv5bl9bmlt7jh9gw68  192.168.20.113:2377
6、添加节点到swarm集群(在要添加的节点上操作-30、31)
docker swarm join --token SWMTKN-1-53zfa8v239nibt9eum4buemmq3wkfjsrqjxbte9ay93i3xzlsn-8cch0txhv5bl9bmlt7jh9gw68 192.168.20.113:2377
可以在manager节点查看集群节点情况:docker node ls


四、配置consul

7、配置consul server(28)
docker run -d -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -p 8600:53 -p 8600:53/udp -h dev28 --restart=always --name=consul progrium/consul -server -bootstrap -ui-dir=/ui -advertise 133.133.10.28 -client 0.0.0.0
8、将其他节点(30、31)加入到consul集群中(28)
docker run -d --restart=always -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -h dev30 --name=consul progrium/consul -join 133.133.10.28 -advertise 133.133.10.30 -client 0.0.0.0
9、在所有节点上配置consul的服务发现(28、30、31)
docker run -d --restart=always --name=registrator --net=host -v /var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator -ip 133.133.10.28 consul://localhost:8500

可在http://133.133.10.28:8500查看Consul节点和服务情况


五、shipyard+swarm

10、启动swarm-manager(28)
docker run -tid -p 3375:3375 --restart=always --name shipyard-swarm-manager swarm:latest manage --host tcp://0.0.0.0:3375 consul://133.133.10.28:8500
11、安装swarm agent(28、30、31)
docker run -tid --restart=always --name shipyard-swarm-agent swarm:latest join --addr 133.133.10.28:2375 consul://133.133.10.28:8500
12、部署shipyard(28)
docker run -tid --restart=always --name shipyard-rethinkdb -p 28015:28015 -p 29015:29015 -v /data/rethinkdb:/data index.tenxcloud.com/docker_library/rethinkdb

docker run -tid --restart=always --name shipyard-controller --link shipyard-rethinkdb:rethinkdb --link shipyard-swarm-manager:swarm -p 80:8080 shipyard/shipyard:latest server -d tcp://swarm:3375

可通过http://133.133.10.28:80查看Shipyard维护的docker集群情况


六、Kong/Kong UI

1、Start your database:
docker run -d --name kong-database \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ postgres:9.4
2、Start Kong:
docker run -d --name kong \ --link kong-database:kong-database \ -e "KONG_DATABASE= postgres" \ -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ -e "KONG_PG_HOST=kong-database" \ -p 8000:8000 \ -p 8443:8443 \ -p 8001:8001 \ -p 7946:7946 \ -p 7947:7947/udp \ kong
3、Start Kong-DashBoard:
docker run -d -p [port]:8080 pgbi/kong-dashboard

可通过http://133.133.10.28:8002查看Kong UI上的API注册情况


备注:
向集群中添加节点(都在该节点上操作):
1. 配置好Docker环境
2. 添加该节点到swarm集群(节点29)
docker swarm join --token SWMTKN-1-61bwj3bq9c4fgc52k8gv8u2v0gu1hczme6ig04yf074n25ucd2-b7fub6rf5h4v08j1ustgo3n1f 133.133.10.28:2377
3. 向consul集群中添加服务节点
docker run -d --restart=always -p 8300:8300 -p 8301:8301 -p 8301:8301/udp -p 8302:8302 -p 8302:8302/udp -p 8400:8400 -p 8500:8500 -h name --name=consul progrium/consul -join 133.133.10.28 -advertise ip -client 0.0.0.0
4. 启动自动发现服务容器
docker run -d --restart=always --name=registrator --net=host -v /var/run/docker.sock:/tmp/docker.sock gliderlabs/registrator -ip ip consul://localhost:8500
5. 启动swarm agent
docker run -tid --restart=always --name shipyard-swarm-agent swarm:latest join --addr ip:2375 consul://133.133.10.28:8500


参考资料:
https://dick.gitbooks.io/docker/content/chapter1.html
http://www.cnblogs.com/csharpsharper/p/5308815.html
https://dick.gitbooks.io/docker/content/docker_guizhi_shipyard.html

你可能感兴趣的:(微服务)