一、购买服务器
- 首先准备4台阿里云服务器,我这里用的是测试的,购买的按量付费的,共享型,1核2G
- 网络择默认的,但是服务器需要在同一安全组中
- 登录凭证选择自定义密码,方便登录操作
- 分组设置,默认就行
- 确认订单信息,勾选服务协议,并创建实例
- 购买成功后可在控制台查看
二、安装docker
- 使用xshell连接服务
- 在xshell窗口中右键->发送键输入到所有会话
- 安装gcc相关环境
yum -y install gcc yum -y install gcc-c++
- 卸载旧版本
sudo yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-engine
-
安装需要的软件包
yum install -y yum-utils
-
设置镜像仓库
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
-
更新yum软件包索引
yum makecache fast
-
安装Docker CE
yum install -y docker-ce docker-ce-cli containerd.io
-
设置docker开机启动
systemctl enable docker
-
启动docker
systemctl start docker
-
通过查看docker版本查看是否安装成功
docker --version
三、搭建docker swarm集群
- 单个服务器操作即可,所以去除“发送键盘输入的所有会话”
- 在服务器1,生成主节点,172.21.133.50为服务器内部ip,根据自己的实际情况修改
docker swarm init --advertise-addr 172.21.133.50
如果清楚了这个信息可以通过命令来获取对应的加入命令# 加入manager docker swarm join-token manager # 加入worker docker swarm join-token worker
- 在服务器2,加入服务器2的节点,可以看到以worker角色加入了
docker swarm join --token SWMTKN-1-5688aph68i9r9mfw3x10znz5wdw33esy2aeapnjzjkr6ks1r3q-140isnfwtzgrbjxbo9ckx7xwq 172.21.133.50:2377
-
在服务器1,查看节点信息
docker node ls
-
在服务器3,作为worker加入节点
docker swarm join --token SWMTKN-1-5688aph68i9r9mfw3x10znz5wdw33esy2aeapnjzjkr6ks1r3q-140isnfwtzgrbjxbo9ckx7xwq 172.21.133.50:2377
-
在服务器1,现在集群上已有3个节点
-
在服务器4,作为manager加入集群
# 在服务器1上生成加入manager的token docker swarm join-token manager # 在服务器4上运行服务器1上生成的命令 docker swarm join --token SWMTKN-1-5688aph68i9r9mfw3x10znz5wdw33esy2aeapnjzjkr6ks1r3q-bpew4e7mdkumvdag65ubvvqcf 172.21.133.50:2377
四、测试使用
- 创建一个nginx服务
docker service create -p 8888:80 --name my-nginx nginx
注意:# 容器启动!不具有扩缩容 docker run # 服务启动!具有扩缩容,滚动更新! docker service
启动服务后会有随机副本,可在其他服务器上查看
-
启动3个副本,动态扩缩荣
docker service update --replicas 3 my-nginx
并且可以在别的服务器中看到服务
并可以在浏览器中进行访问,只要在集群中的服务器都可以访问
-
甚至可以扩容10个,会随机分配容器个数。服务可以有多个副本动态扩缩容,实现高可用。
docker service update --replicas 10 my-nginx
-
也可以使用scale进行扩缩容,与update效果一样
docker service scale my-nginx=5