文章目录
swarm部署
一、节点docker环境安装
- 安装yum-config-manager功能,另外两个是devicemapper驱动依赖
yum install -y yum-utils device-mapper-persistent-data lvm2
- 设置阿里yum源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
- 查看仓库中docker版本
yum list docker-ce --showduplicates | sort -r
- 指定版本安装
yum -y install docker-ce-18.03.1.ce
- 修改镜像仓库地址
[root@localhost docker]# cat /etc/docker/daemon.json
{
"registry-mirrors": ["https://kdsawiag.mirror.aliyuncs.com","https://registry.docker-cn.com"]
}
6.启动docker,加入开机启动
systemctl start docker
systemctl enable docker
二、swarm环境安装
官方的docker集群解决方案,实现对多台服务器中docker的互联互通、统一管理和部署。
通过一个或多个manage node关联一个或多个worker node,组成一个docker的集群环境。
1. swarm 管理节点初始化
- –advertise-addr 参数指定管理节点公布IP,提供slaver加入
记录命令结果信息,提供slaver节点加入集群
sudo docker swarm init --data-path-port 5789 避免云主机端口限制
[root@localhost ~]# docker swarm init --advertise-addr 192.168.1.61
Swarm initialized: current node (4dyxxume6yzdw9ysc9n3wumm1) is now a manager.
To add a worker to this swarm, run the following command:
docker swarm join --token SWMTKN-1-27wow2lsk4ayyxt0v24vzi6gs3riyyagwp0mj3dl7c1d7viuo5-cjqb6d4pyvtjocechh4fix11j 192.168.1.61:2377
To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.
- 防火墙设置
firewall-cmd --list-all
firewall-cmd --zone=public --add-port=2377/tcp --permanent
firewall-cmd --zone=public --add-port=7946/tcp --permanent
firewall-cmd --zone=public --add-port=7946/udp --permanent
firewall-cmd --zone=public --add-port=4789/tcp --permanent
firewall-cmd --zone=public --add-port=4789/udp --permanent
firewall-cmd --reload
- 查看集群节点信息
[root@localhost ~]# docker node ls
- 查看集群状态
[root@localhost ~]# docker info
以下端口必须是开放的:
TCP port 2377为集群管理通信
TCP and UDP port 7946 为节点间通信
UDP port 4789 为网络间流量
2. slaver1节点加入swarm集群
- 运行管理节点初始化后提供的 join 命令
- 公有云环境服务器是nat网络,需要advertise-addr 指定本节点公网nodeIP
[root@worker1 ~]# docker swarm join --token SWMTKN-1-6akxqhk7syhoqexav7nnyfi96hwnaexgrm5hc3j38sqgaooks7-75co8fsybkm1qnzkgctouwn7r 121.36.169.*:2377 --advertise-addr 116.63.128.*:2377
- 或者在管理节点找回命令
docker swarm join-token worker
- slaver2节点执行相同操作
3. 服务发布
[root@localhost ~]# docker service create --replicas 1 --name nginx -p 2080:80 nginx:1.10
4. 管理命令
docker service ls 发布服务列表
docker service inspect nginx 查看服务详情
docker service ps nginx 查看服务详情
docker service scale nginx=5 伸缩副本数量
docker service rm helloworld 删除服务(同时容器停止)
docker service update --image redis:3.2.5-alpine redis 更新指定服务的镜像
docker service create --replicas 3 --name redis --update-delay 10s redis:3.0.7-alpine 指定镜像进行滚动更新
docker node update --availability drain worker02 下线指定节点(容器迁移到active节点)
docker node update --availability active worker2 指定节点上线
docker service update --publish-add published=8080,target=2368 ghost 指定已存在的服务暴露端口
5. 网络模式
docker的swarm模式使服务暴露给外部端口更加方便。所有的节点都在一个路由网络里。这个路由网络使得集群内的所有节点都能在开放的端口上接受请求。即使节点上没有任务运行,这个服务的端口也暴露的。路由网络路由所有的请求到暴露端口的节点上。
6. TIPS
1. swarm集群镜像同步
- stack发布任务后,worker节点通过私有仓库pull镜像
通过如下命令,对源镜像文件tag、push
[root@master docker]# docker tag demo 192.168.1.61:5000/demo:latest
[root@master docker]# docker push 192.168.1.61:5000/demo
- 通过compose.yml文件发布(或者portainer中stack功能)
docker stack deploy -c compose.yml springboot-stack
[root@master docker]# cat compose.yml
version: '3'
services:
nginx:
image: '192.168.1.61:5000/demo'
ports:
- "8081:8081"
environment:
- ALLOW_EMPTY_PASSWORD=yes
deploy:
replicas: 3
portainer部署
一、docker 下载
- 下载yml文件
curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml
- 部署容器
docker stack deploy --compose-file=portainer-agent-stack.yml portainer
二、发布stacks(可包含多个service)
- 菜单 Stacks - addStack
- 编辑docker-compose文件
version: '3'
services:
nginx:
image: 'nginx:1.10'
ports:
- "80:80"
environment:
- ALLOW_EMPTY_PASSWORD=yes
deploy:
replicas: 1
- Deploy the stack 按钮部署
三、swarm网络实现
- Ingress
Ingress是swarm集群中每个node都默认存在的一种网络类型,它的作用是可以确保部署在集群中某个端口的服务始终保留该端口,不管实际运行容器的是哪个节点。
- Overlay
Overlay网络可以将多个Docker守护进程连接在一起,使集群服务能够彼此通信
创建Overlay网络有以下几种方式:
- 在docker-compose.xml中通过network属性创建。如果不指定network,则会创建一个名为服务名_default的默认overlay网络,并且所以service都加入该overlay网络
- 使用docker network create手动创建,在创建service时手动指定network并加入
四、容器间网络通信
针对redis service、rebrow servvice进行测试
- 部署到同一个stack
- 可通过集群任意IP访问
- 可通过redis 容器名:redisTest_redis访问
version: '3'
services:
redis:
image: 'bitnami/redis:5.0'
ports:
- "6379:6379"
environment:
- ALLOW_EMPTY_PASSWORD=yes
deploy:
replicas: 1
rebrow:
image: 'marian/rebrow'
ports:
- "5001:5001"
deploy:
replicas: 1
- 分别部署到一个stack
- 可通过集群任意IP访问
- 不可通过容器名访问
- 手动创建Overlay网络,service中指定
docker network create --driver overlay swarm_test
docker service create --replicas 2 --name helloworld --network=swarm_test nginx:alpine
jenkins
一、安装
-
- 方法1
sudo wget -O /etc/yum.repos.d/jenkins.repo https://pkg.jenkins.io/redhat-stable/jenkins.repo
sudo rpm --import https://pkg.jenkins.io/redhat-stable/jenkins.io.key
yum install jenkins
-
- 方法2
wget https://pkg.jenkins.io/redhat/jenkins-2.156-1.1.noarch.rpm
rpm -ivh jenkins-2.156-1.1.noarch.rpm
二、配置
vim /etc/sysconfig/jenkins
#监听端口
JENKINS_PORT="8080"
#修改配置
$JENKINS_USER="root"
修改目录权限
chown -R root:root /var/lib/jenkins
chown -R root:root /var/cache/jenkins
chown -R root:root /var/log/jenkins
重启
service jenkins restart
ps -ef | grep jenkins
三、初始化
http:<ip或者域名>:8080
输入初始化密码:cat /var/lib/jenkins/secrets/initialAdminPassword
选择默认安装插件,创建管理员账户
四、war包升级
1. 下载升级包
http://updates.jenkins-ci.org/download/plugins/ssh/ 下载插件
[Manage Jenkins]->New version of Jenkins download 下载jenkins.war
2. 查看war包目录,替换后重启
[root@master ~]# rpm -ql jenkins
/usr/lib/jenkins/jenkins.war
mv /tmp/jenkins.war .
service jenkins restart
3. 手工更新插件
- 升级Jenkins 2.238后 管理页面插件报错
- http://updates.jenkins-ci.org/download/plugins/下载durable-task指定插件版本1.29
- 插件管理,手工上传后,重启应用恢复
- 安装SSh、maven插件
4. 构建
- jenkins服务端安装git,maven,jdk
- jenkins全局配置中
- jdk JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk
- git 默认
- maven MAVEN_HOME=/usr/share/maven
- 修改maven仓库地址为阿里云
vi /usr/share/maven/conf/settings.xml
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
- 新建任务
FreeStyle project
-
设置源码管理(git仓库配置)
https://gitee.com/chenenxiong/mall-swarm.git
添加凭证 -
构建springboot依赖
-
目标:clean install -pl mall-common,mall-mbg,mall-security -am (先构建被依赖的模块)
POM:${WORKSPACE}/pom.xml -
目标:clean package
POM:${WORKSPACE}/mall-registry/pom.xml
-
5.部署
- 通过jenkins调用maven构建,手工上传jar包到服务器启动
- springboot打包jar结果路径: /root/.m2/repository/com/example/mall/mall-admin/1.0-SNAPSHOT/mall-admin-1.0-SNAPSHOT.jar
- Build中,配置完成后动作:上传服务器,执行脚本…
- 通过maven配置docker插件,maven构建后自动上传到docker服务器镜像中
- 指定配置后操作,调用shell脚本启动容器
本文详细介绍Docker Swarm集群的搭建过程,包括节点环境安装、集群初始化、服务发布及管理等核心步骤。此外,还介绍了Portainer的安装与使用方法,帮助读者掌握Swarm模式下多服务的统一管理。
4281

被折叠的 条评论
为什么被折叠?



