阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Nginx部署Tomcat/WildFly集群负载均衡

164次阅读
没有评论

共计 2922 个字符,预计需要花费 8 分钟才能阅读完成。

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&amp;autoReconnect=true&amp;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,完成持续集成、部署。

正文完
星哥说事-微信公众号
post-qrcode
 
星锅
版权声明:本站原创文章,由 星锅 2022-01-21发表,共计2922字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中