zoukankan      html  css  js  c++  java
  • Nginx部署tomcat/wildfly集群负载均衡

    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,完成持续集成、部署。

  • 相关阅读:
    人名币转大写
    Http协议与TCP协议简单理解
    unity3d常用属性汇总
    ConcurrentHashMap的key value不能为null,map可以?
    一个线程池中的线程异常了,那么线程池会怎么处理这个线程?
    Dubbo负载均衡算法
    [LeetCode] 240. 搜索二维矩阵 II ☆☆☆(二分查找类似)
    [LeetCode] 74. 搜索二维矩阵 ☆☆☆(二分查找)
    Maven中的dependencyManagement 意义
    深入理解maven构建生命周期和各种plugin插件
  • 原文地址:https://www.cnblogs.com/mushou/p/10417144.html
Copyright © 2011-2022 走看看