docker-swarm容器固定到node节点启动
Docker-compose的编排
首先这里需要创建一个目录mkdir /docker-compose然后在里边创建一个docker-compose.yml的文件。
具体包括:
Images、hostname、ports、networks、volumes、deploy这些内容
其中包括nginx+tomcat1+tomcat2三个服务
version: "3" 这是最新的版本
services:
nginx:
image: nginx5:latest
hostname: nginx
ports:
- "8021:80"
networks:
- "mynet"
volumes:
- "/srv/jetsen/nginx:/nginx"
- "nginx://usr/local/nginx-1.6.2"
deploy:
placement:
constraints:
- engin.labels.function == nodeone
tomcat1:
image: tomcat15:latest
hostname: tomcat1
ports:
- "8088:8080"
networks:
- "mynet"
volumes:
- "/srv/jetsen/tomcat1:/tomcat1"
- "tomcat1jdk:/usr/local/jdk1.7.0_79"
- "tomcat1tomcat://usr/local/apache-tomcat-7.0.61/"
deploy:
placement:
constraints:
- engine.labels.function == nodeone
tomcat2:
image: tomcat15:latest
hostname: tomcat2
ports:
- "8089:8080"
networks:
- "mynet"
volumes:
- "/srv/jetsen/tomcat2:/tomcat2"
- "tomcat2jdk:/usr/local/jdk1.7.0_79"
- "tomcat2tomcat://usr/local/apache-tomcat-7.0.61/"
deploy:
placement:
constraints:
- engine.labels.function == nodetwo
volumes:
nginx:
tomcat1tomcat:
tomcat1jdk:
tomcat2tomcat:
tomcat2jdk:
networks:
mynet:
external: true
另外需要修改docker的主配置文件
--label=function=nodeone: 一个标签【别名】
--label=host=node1 : 主机名
--registry-mirror=http://e0d76b42.m.daocloud.io:国内的镜像
注:另外node2的服务器节点也需要修改
完成之后通过docker stack deploy -c docker-compose.yml 【mynet:名字】
启动这个docker-compose编排文件
查看docker service list
查看运行的节点
Nginx+tomcat1+tomcat2反向代理docker
实现上面的三个容器运行必须要有三个dockerfile写出来的启动镜像
Nginx:
这里使用的是nginx1.6.2版本
ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -F /usr/local/nginx/logs/access.log
FROM docker.io/centos:7.2.1511
MAINTAINER LXF
RUN yum -y install gcc gcc-c++ kernel-headers dracut make auotmake autoconf libtool pcre pcre-devel zlib zlib-devel openssl openssl-devel
ADD ./nginx-1.6.2 /usr/local/nginx-1.6.2
RUN cd /usr/local/nginx-1.6.2 && ./configure --prefix=/usr/local/nginx --with-http_stub_status_module && make &&make install
EXPOSE 80
ENTRYPOINT /usr/local/nginx/sbin/nginx && tail -F /usr/local/nginx/logs/access.log
Tomcat1的镜像:
Tomcat使用的是7版本
FROM docker.io/centos:7.2.1511
MAINTAINER LXF
RUN yum -y install gcc gcc- c++ make glibc kernel-headers tar glibc-common
ADD ./apache-tomcat-7.0.61 /usr/local/apache-tomcat-7.0.61
ADD ./jdk1.7.0_79 /usr/local/jdk1.7.0_79
ENV JAVA_HOME=/usr/local/jdk1.7.0_79
ENV PATH=$JAVA_HOME/bin:$PATH
FROM docker.io/centos:7.2.1511
MAINTAINER LXF
RUN yum -y install gcc gcc- c++ make glibc kernel-headers tar glibc-common
ADD ./apache-tomcat-7.0.61 /usr/local/apache-tomcat-7.0.61
ADD ./jdk1.7.0_79 /usr/local/jdk1.7.0_79
ENV JAVA_HOME=/usr/local/jdk1.7.0_79
ENV PATH=$JAVA_HOME/bin:$PATH
ENV CATALINA_HOME=/usr/local/apache-tomcat-7.0.61
ENV PATH=$JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH
ADD ./server.xml /usr/local/apache-tomcat-7.0.61/conf/server.xml
RUN mkdir -p /web/webapp1
ADD index.jsp /web/webapp1/index.jsp
RUN chmod +x /usr/local/apache-tomcat-7.0.61/bin/*
EXPOSE 8080
ENTRYPOINT /usr/local/apache-tomcat-7.0.61/bin/startup.sh && tail -F /usr/local/apache-tomcat-7.0.61/logs/catalina.out
~
Tomcat2的镜像和tomcat1的没有区别就是在index.Jsp文件有区别
完成之后开始生产成镜像 通过docker build -t 镜像 /路径
aa是nginx的镜像
完成之后需要去编写docker-compose.yml文件
内容如下
version: "3"
services:
tomcat1:
image: tomcat:1
hostname: tomcat1
expose:
- 8080
networks:
- "mynet"
volumes:
- "/srv/jetsen/tomcat1:/tomcat1"
- "tomcat1jdk:/usr/local/jdk1.7.0_79"
- "tomcat1tomcat://usr/local/apache-tomcat-7.0.61/"
deploy:
placement:
constraints:
- engine.labels.function == nodeone
tomcat2:
image: tomcat:2
hostname: tomcat2
expose:
- 8080
networks:
- "mynet"
volumes:
- "/srv/jetsen/tomcat2:/tomcat2"
- "tomcat2jdk:/usr/local/jdk1.7.0_79"
- "tomcat2tomcat://usr/local/apache-tomcat-7.0.61/"
deploy:
placement:
constraints:
- engine.labels.function == nodetwo
nginx:
image: aa:aa
hostname: nginx
ports:
- "8021:80"
networks:
- "mynet"
volumes:
- "/srv/jetsen/nginx:/nginx"
- "nginx1:/usr/local/nginx-1.6.2"
- "nginx2://usr/local/nginx"
deploy:
placement:
constraints:
- engine.labels.function == nodeone
volumes:
nginx:
nginx1:
nginx2:
tomcat1tomcat:
tomcat1jdk:
tomcat2tomcat:
tomcat2jdk:
networks:
mynet:
external: true
注:卷组一定要在最后标注,另外加红颜色的路径要创建才行 加绿色的表示申明的作用使用的卷组和网络
完成之后需要启动这个docker-compose文件
自己定义名字
当然删除的命令是
看一下起来的容器
前面说过tomcat2在woeker节点上工作
启动三个容器之后进行反向代理的配置
需要在nginx的主配置文件配置upstream,可以去卷组里面配置
手动添加
添加在卷组当中会自动和容器的数据同步,防止容器挂掉数据丢失
完成之后需要测试一下
反向代理测试:
注:如果有业务需要需要将docker-compose文件单独分开那么需要编写单独的文件,比如讲上面的分为三分,每一份都需要申明网络和卷组。当然使用同一个网络mynet的话,启动的容器之间还是可以互相同信得
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Mysql主从架构-主库宕机如何恢复业务
在我们日常工作场景,首先要做到架构无单点隐患,其次在优化【安全、性能、高可用、高并发等】,Mysql这款关系型数据库稳定、高效,所以使用广泛,如果企业架构是1主多从,那如果Mysql主库宕机,如何解决? 最新博客地址: https://www.dgstack.cn/archives/178.html ----MySQL 主从同步原理图 一、Mysql主库宕机情况分类: 1)硬件问题,(服务器、ecs、虚拟主机等等)宕机 2)service问题,Mysql宕机,服务异常,端口异常等 二、硬件问题处理思路 硬件问题我们可以查看IDC巡检记录,或通过远程控制卡查看硬件运行状态,根据事实情况就行硬件故障报修进行处理,恢复业务步骤: 1)查看报警信息,确认业务是否收到影响,必要时切从库进行数据交互 2)IDC询问排查 3)确认硬件故障,短时间无法修复开Case处理 4)通知部门领导,处理进度,并实时记录 5)事件处理完成后,拟写故障报告,会议通报。 三、MySQL service问题处理思路 1)首先要做的就是判断是否影响业务,是否需要切库,保证业务运行时首要任务2)如果此时需要切从库,安装如下...
- 下一篇
VMWare vShere/ESX硬盘的后置备与精简配置之间的转换
VMWare vShphere/ESX 有如下三种硬盘置备方式: 1、厚置备延迟置零(Thinck Provision Lazy Zeroed):默认的创建格式,创建过程中为虚拟磁盘分配所需空间。创建时不会擦除物理设备上保留的任何数据,没有置零操作,当有IO操作时,需要等待清零操作完成后才能完成IO,即:分配好空间,执行写操作时才会按需要将其置零。 2、厚置备置零(Thick Provision Eager Zeroed): 创建支持群集功能的厚磁盘。在创建时为虚拟磁盘分配所需的空间。并将物理设备上保留的数据置零。创建这种格式的磁盘所需的时间可能会比创建其他类型的磁盘长。即:分配好空间并置零操作,有IO的时无需等待任何操作直接执行。 3、精简置备(Thin Provision): 精简配置就是无论磁盘分配多大,实际占用存储大小是现在使用的大小,即用多少算多少。当客户机有输入输出的时候,VMkernel首先分配需要的空间并进行清零操作,也就是说如果使用精简配置在有IO的时候需要:等待分配空间和清零,这两个步骤完成后才能进行操作,对于IO叫频繁的应用这样性能会有所下降,虽然节省了存储空间。...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Linux系统CentOS6、CentOS7手动修改IP地址
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS6,CentOS7官方镜像安装Oracle11G