1.調度器配置: docker run -p 80:80 --name nginx --restart=always -v /root/nginx/www/:/usr/share/nginx/html -v /root/nginx/conf/conf.d:/etc/nginx/conf.d -v / ...
1.調度器配置:
docker run -p 80:80 --name nginx --restart=always -v /root/nginx/www/:/usr/share/nginx/html -v /root/nginx/conf/conf.d:/etc/nginx/conf.d -v /root/nginx/logs:/var/log/nginx -v /etc/localtime:/etc/localtime -d nginx
將寫好的default.conf的nginx配置文件寫好,詳見文件其中包括兩台後端伺服器;
放到conf.d目錄,掛載到容器的/etc/nginx/conf.d;
將容器內的日誌/var/log/nginx映射出到 宿主機;
將宿主機時間映射到容器內;
2.後端伺服器配置:
1)搭建nfs伺服器共用
後端伺服器掛載該 nfs伺服器資源
2)搭建mysql57資料庫伺服器
3)部署應用服務(tomcat8)
docker run -d -p 8080:8080 -v /opt/server.xml:/usr/local/tomcat/conf/server.xml -v /opt/tomcat應用項目:/usr/local/tomcat/webapps/應用項目名 -v /etc/localtime:/etc/localtime -v /opt/應用項目/logs:/logs -v /opt/應用項目/applog:/usr/local/tomcat/logs --name 應用項目 --restart=always tomcat:8
將tomcat配置文件server.xml文件掛載到容器;
將應用掛載到容器中的/usr/local/tomcat/webapps;
將本地時間映射到容器;
將日誌映射到宿主機相應目錄;
--restart=always:總是重啟,便於重啟主機後不能自行啟動;
4)部署應用服務容器方式( jboss/wildfly)
先採用容器模式部署
docker run -d -p 80:8080 -p 9990:9990 -u root -v /etc/localtime:/etc/localtime
-v /opt/jboss/standalone.xml:/opt/jboss/wildfly/standalone/configuration/standalone.xml
-v /opt/jboss/module/mysql-connector.jar:/opt/jboss/wildfly/standalone/deployments/mysql-connector.jar
--name wildfly jboss/wildfly
將寫好的 wildfly的配置文件 standalone.xml文件掛載到容器目錄;
將jdbc 驅動 jar包放入容器內,以便建立jdbc 數據源使用;
編輯standalone.xml文件,
在<subsystem xmlns="urn:jboss:domain:datasources:2.0 標簽內添加datasources及driver:
例如:
<datasource jndi-name="java:jboss/datasources/MysqlDs" pool-name="MysqlDs" enabled="true" use-ccm="false">
<connection-url>jdbc:mysql://ip地址及埠/資料庫名稱?useSSL=true&autoReconnect=true&failOverReadOnly=false</connection-url>
<driver>mysql-connector.jar</driver>mysql-connector.jar為啟動容器時掛載到deployments目錄的jar包
<security>
<user-name>*****</user-name>
<password>******</password>
</security>
註意修改其中的參數( url db_name username password)
3.session問題:
在nginx負載調度器中配置 ip_hash演算法,它會根據ip地址去找後端伺服器,session會根據ip保持;
4.採用Jenkins集成部署war包到wildfly
1)部署Jenkins
用容器方式:
docker run -d -p 8002:8080 -u root
-v /etc/profile:/etc/profile
-v /usr/local/java:/usr/local/java
-v /usr/local/ant:/usr/local/ant
-v /root/jenkins:/var/jenkins_home
--name jenkins --restart=always jenkins/jenkins
將ant及java及環境文件掛到jenkins容器中;
2)啟動Jenkins及部署
添加插件
系統管理-插件管理-未安裝-jboss management plugin 、wildfly
系統管理-全局工具配置-新增ant
系統管理-全局工具配置-新增java
新建項目:源碼管理:https://svn伺服器IP地址/相關代碼目錄
構建環境:with ant :ant、java
構建:ant
增加構建步驟:
Deploy War to Wildfly,此處可加入多台需要部署的後端伺服器,本文有兩台後端伺服器;
war包所在目錄:
Hostname:ip地址
Port:9990
User name:admin
Password:admin
構建項目
出現錯誤:FATAL: Unable to initialize command context.
解決辦法:
將/Jenkins/ plugins/wildfly-deployer/WEB-INF/lib/wildfly-cli-8.2.1.Final.jar
/Jenkins/plugins/wildfly-deployer/WEB-INF/lib/wildfly-deployer.jar兩個文件拷貝至
/Jenkins/war/WEB-INF/lib目錄下,重新構建,成功。
3)重覆部署
出現錯誤java.lang.OutOfMemoryError: Java heap space
在wildfly的standalone.sh文件中加入
JAVA_OPTS="-Xms256m
-Xmx2048m
-XX:NewSize=256m
-XX:MaxNewSize=512m
-XX:PermSize=128m
-XX:MaxPermSize=256m
-XX:+UseConcMarkSweepGC
-XX:+CMSPermGenSweepingEnabled
-XX:+CMSClassUnloadingEnabled
-Djboss.platform.mbeanserver"
問題解決
5.完成了nginx作為調度器,後端有兩台tomcat或者wildfly的伺服器集群部署,同時在調度器上部署Jenkins,完成持續集成、部署。