介绍一下,从0到1如何用docker swarm集群部署微服务;
1、代码准备
码云 : https://gitee.com/zhangzexu/blog-parent.git
github: https://github.com/zhangzexu/blog-parent.git
2、CentOS 6.7 主机两台,虚拟机,服务器都可以,虚拟机配置桥接,其他的随意。(自己用的是华为云,在配置的时候直接使用云服务器内网地址即可: 192.168.0.119 、 192.168.0.116)
需要安装jdk1.8 ,其他jdk版本没有测试,有兴趣的可以自己测试一下。
安装maven,本测试项目使用maven
3、DockerHub账号一枚,注册地址 https://hub.docker.com/,如果是私服仓库请用自己的仓库和地址( 自己用的是docker hub账号,方便)
命令没有具体说明安装在几台机器上,默认所有机器安装。
1、较旧版本的Docker被称为docker
或docker-engine
。如果已安装这些,请卸载它们以及相关的依赖项。(可以参考官方文档:
https://docs.docker.com/install/linux/docker-ce/centos/#set-up-the-repository)
$ sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine
2、设置存储库
(1)安装所需的包。yum-utils
提供了yum-config-manager
使用,并由device-mapper-persistent-data
和lvm2提供
需要 devicemapper的
存储驱动程序。
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
(2)使用一下命令设置稳定的docker存储库
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
3、安装docker
(1)安装最新版本的Docker CE(这里为方便学习,就不安装特定版本的docker,可自行参考官方文档)
$ sudo yum install docker-ce
(2)启动docker
$ sudo systemctl start docker
(3)查看是否启动成功(出现如下命令说明安装成功)
$ docker -v
Docker version 18.09.0, build 4d60db4
(4)镜像加速
鉴于国内网络问题,后续拉取 Docker 镜像十分缓慢,我们可以需要配置加速器来解决,我使用的是网易的镜像地址:http://hub-mirror.c.163.com。请在该配置文件中加入(没有该文件的话,请先建一个):vi /etc/docker/daemon.json
{
"registry-mirrors": ["http://hub-mirror.c.163.com"]
}
(5)登录docker hub (如果配置私服请登录私服)
$ docker login
4、创建docker swarm集群(具体可参考官方文档 https://docs.docker.com/engine/reference/commandline/swarm_init/#description)
(1)创建一个集群,在其中一台主机上运行
$ docker swarm init --advertise-addr 192.168.0.116
Swarm initialized: current node (bvz81updddecsj6wjz393c09v) is now a manager.
To add a manager to this swarm, run the following command:
docker swarm join --token SWMTKN-1-33k4lmbuh9auagtyzwmfcdk6a95thfefvcbll8c9vv6gukdjkz-7tmzhqk605dhg2g3crn9ify9k 192.168.0.116:2377
下面提示,docker swarm集群上加入一个manager可运行如下命令docker swarm join --token SWMTKN-1-33k4lmbuh9auagtyzwmfcdk6a95thfefvcbll8c9vv6gukdjkz-7tmzhqk605dhg2g3crn9ify9k 192.168.0.116:2377
(2)加入一个worker (在另一台机器上运行)
$ docker swarm join-token worker
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-33k4lmbuh9auagtyzwmfcdk6a95thfefvcbll8c9vv6gukdjkz-4un2i2g1moyqp619rchmwarms 192.168.0.116:2377
提示在集群上加入一个worker运行docker swarm join --token SWMTKN-1-33k4lmbuh9auagtyzwmfcdk6a95thfefvcbll8c9vv6gukdjkz-4un2i2g1moyqp619rchmwarms 192.168.0.116:2377
(3)查看docker swarm集群信息
$ docker info
Swarm: active
NodeID: soeftfx2jldeyvv164s36q4ji
Is Manager: true
ClusterID: ybnecqqo9euxjksatlrab2jor
Managers: 1
Nodes: 2
出现如下情况,说明集群安装成功,集群具体操作命令请参考https://blog.csdn.net/wanglei_storage/article/details/77508620
5、在eclipse或idea上克隆码云实例代码,分别在每个项目下使用mvn clean install 即可打包发布到docker hub上,代码的说明和pom.xml上的具体配置请参照实例代码,pom.xml参考bolg-web-ui下的pom文件,这里就不做解释了。配置maven setting文件增加docker hub上的配置
<server>
<id>docker-hub</id>
<username>dockerHub账户</username>
<password>密码</password>
<configuration>
<email>邮箱</email>
</configuration>
</server>
代码发布完成功后,请打开docker hub查看,当然,不发布的话,可以直接使用我的docker hub上的项目在docker swarm上运行也是可以的,如图显示发布成功后docker hub上的项目
6、启动springCloud项目
(1)配置docker网卡
$ docker network create -d overlay --subnet 10.0.0.0/24 my_net
如图,查看会发现多了一个名为my_net的网卡,可以配置在swarm集群上,这些服务可以再同一个网络
(2)启动微服务
docker-compose-swram.yml文件在项目的根路径下,测试请上传至docker manager节点,在manager节点上运行如下命令
$ docker stack deploy -c docker-compose-swarm.yml --with-registry-auth bolg
启动后查看 $docker service ls
我们发现微服务都已经启动起来了
(3)安装swarm集群可视化界面 visualizer请参考官网 https://hub.docker.com/r/dockersamples/visualizer/
请关闭程序占用的8080端口,在manager运行如下命令
$ docker service create \
--name=viz \
--publish=8080:8080/tcp \
--constraint=node.role==manager \
--mount=type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
dockersamples/visualizer
安装成功后,在浏览器上输入manager的地址 http://IP:8080,出现如下界面
说明完成,我们访问注册中心,也会发现服务都已经启动起来了
我们已经完成了docker部署微服务,如需更深入的学习,请大家可以继续学习其他内容,有可以有些小伙伴的机器环境不一样,没出现的结果也会不一样,有问题可以在下方留言,我会第一时间帮大家解决的