zoukankan      html  css  js  c++  java
  • 微服务环境搭建

    微服务环境搭建(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

  • 相关阅读:
    围棋角部大眼的气
    openwrt 增加自定义包
    OpenWrt – 编译前的./scripts/feeds脚本用法
    memset 赋初值为无穷大和无穷小
    android 自动点击学习课程
    最多硬币问题
    最少硬币问题
    9.2 嵌套矩形问题
    ajax请求到一个controller在跳转到下载的controller上也不能下载,百度了一下总结下原因:发现原来jQuery的ajax回调已经把response的数据傻瓜式的以字符串的方式解析.
    MySQL 数据库的远程访问权限
  • 原文地址:https://www.cnblogs.com/Leo_wl/p/8023031.html
Copyright © 2011-2022 走看看