Docker Swarm 是Docker官方提供的一款集群管理工具,其主要作用是把若干台 Docker 主机抽象为一个整体,并且通过一个入口统一管理这些 Docker 主机上的各种 Docker资源。
二、名词解释
我选择的是阿里云服务器,登录阿里云控制台,并进入【云服务器ESC】,本例中我购买4台1核2G服务器(1主3从),可选择按量付费,用完即释放,花费很少,不过前提是阿里云账户余额要不低于100元,镜像选择【CentOS】,进入下一步,安全组选默认即可,带宽峰值可随意,因为是按量付费,进入下一步,选择【自定义密码】,其余都默认即可,4台服务器购买完毕!
可使用xshell右键发送键输入到所有会话功能一次性操作4台服务器安装Dcoker
1.安装gcc
yum -y install gcc
yum -y install gcc-c++
2.卸载旧Docker,保证环境干净
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
3.安装需要的安装包
yum install -y yum-utils
4.添加yum源(推荐使用国内)
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
5.更新yum软件包索引
yum makecache fast
6.安装Docker引擎
yum install -y docker-ce docker-ce-cli containerd.io
7.启动Docker
systemctl start docker
8.验证Docker是否启动成功
docker version
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://edfpljvp.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
初始化
docker swarm init --advertise-addr 172.18.135.220
先使用 ip addr命令查看 eth0 服务器的内网地址,为172.18.135.220,使用内网是不消耗流量的;
运行成功后解释:
#Swarm初始化完毕,当前是一个管理节点
Swarm initialized: current node (rzkzgfn0p2yr86ozmo54fevfi) is now a manager.
#你可以使用这个命令让其他几点加入进来
docker swarm join --token SWMTKN-1-0chuuf818l083x7qx8t2zy5icypj0wygkdf9pqz3sls3ecouzh-ar9tdt8gx2tdr4c81bspptv62 172.18.135.220:2377
#可以使用下列命令来添加一个管理节点
docker swarm join-token manager
生成加入令牌
#加入主节点
docker swarm join-token manager
#加入工作几点
docker swarm join-token worker
docker swarm join 加入一个节点
例:将 Docker-2 加入 Docker-1 的管理节点,加入后充当一个工作节点
docker swarm join --token SWMTKN-1-0chuuf818l083x7qx8t2zy5icypj0wygkdf9pqz3sls3ecouzh-ar9tdt8gx2tdr4c81bspptv62 172.18.135.220:2377
如果直接运行可能会报错:
解决:关闭Docker-1服务的防火墙
#查看防火墙状态
systemctl status firewalld.service
#关闭防火墙
systemctl stop firewalld.service
加入后在管理节点Docker-1运行命令查看节点列表
docker node ls
其他服务器也要加入到当前管理节点时,可在管理几点Docker-1中运行以下命令获取加入令牌:
docker swarm join-token manager
如果出现管理节点异常:The swarm does not have a leader
可运行:
docker swarm init --force-new-cluster
主动离开节点
docker swarm leave
离开后,集群中该节点仍然存在,但是状态显示为Down, 需要在Swarm的Manager节点执行以下命令来删除
docker node rm --force 节点id
双主双从:假设一个几点挂了,其他节点是否可用?(不可用)
解释:
**Raft协议:**保证大多数节点存活才可以用,只要>1,所有得出结论:集群至少大于3台!