准备镜像
构建tomcat镜像
下载jdk、tomcat压缩包,修改tomcat配置文件Content.xml和server.xml,编写Dockerfile重新构建
准备3台以上服务器
安装docker swarm环境,将所有服务器加入集群环境(至少3台机器作为主节点)
创建tomcat nfs共享目录
启动nfs服务
创建docker volume链接nfs共享服务器
–opt o=addr=10.20.1.9 NFS服务器地址
–opt device=:/root/share 指向共享目录,也可以是共享目录下的子目录
创建服务网络
创建tomcat服务
–replicas=2创建两个副本
–name tomcat-cluster服务名称
–mount src=nfs-tomcat,dst=/usr/local/tomcat/webapps挂载nfs
弹性伸缩扩展容器服务副本
容器副本内部ip分布通常为每两个副本为一个ip
安装nginx
解压缩nginx-1.18.0.tar.gz,进入nginx目录
配置nginx
进入/usr/local/nginx
- nginx负载均衡upstream地址配置必须为容器内部ip端口
- 负载均衡暂时采用ip_hash解决session共享问题
- 集群内所有服务器地址均可访问容器服务
部署portainer可视化容器管理
下载portainer镜像
创建数据卷
创建网络
创建portainer代理服务
创建portainer服务
- 参数说明:
–publish 9000:9000 :宿主机9000端口映射容器中的9000端口
–mount type=bind /var/run/docker.sock:/var/run/docker.sock :把宿主机的Docker守护进程(Docker daemon)默认监听的Unix域套接字挂载到容器中;
–mount type=volume portainer_data:/data :把宿主机portainer_data数据卷挂载到容器/data目录;
–constraint node.rolemanager 指定容器运行在管理节点上.
–constraint node.hostnamemanager-node 指定容器运行在管理节点manager-node上.
–container-label com.docker.stack.namespace=portainer 是为了prometheus+grafana能通过stack标签查看监控数据,建议今后不以stack方式部署的服务都加上com.docker.stack.namespace标签
- 注意: