nginx+tomcat负载均衡搭建

来源:互联网 发布:乔丹史兰斯基 知乎 编辑:程序博客网 时间:2024/05/17 15:05

spider##JDK安装
去jdk官网下载自己需要的jdk版本,我使用的是jdk-7u67-linux-x64.tar.gz. 将包下载到指定路径下,我这里会将所有的软件包都下载到 /usr/local/ 目录下。解压,输入命令:

tar -zxvf jdk-7u67-linux-x64.tar.gz

会解压到当前目录有个jdk1.7.0_67的文件夹。这里为了后面方便配置JDK的配置,我创建了一个link文件夹

ln -s jdk1.7.0_67 java

然后去设置Java环境变量,修改系统的环境配置文件。

vi /etc/profile

在文件最下面添加:

export JAVA_HOME=/usr/local/javaexport PATH=$JAVA_HOME/bin:$PATH

保存。执行下面命名是该配置文件在系统生效:

 source /etc/profile

这个时候就可以运行java 或javac 看看是否安装成功了。

tomcat 安装

与上面的方式类似,先上传包到/usr/local/目录下面,解压包到/usr/local/, 我使用的版本是apache-tomcat-7.0.55.tar.gz,解压后的文件夹为:apache-tomcat-7.0.55 同样创建一个link:

ln -s apache-tomcat-7.0.55 tomcat

与上面的方式类似,去设置tomcat的环境变量

export CATALINA_HOME=/usr/local/tomcatexport PATH=$CATALINA_HOME/bin:$PATH

保存。执行下面命名是该配置文件在系统生效:

source /etc/profile

nginx 安装

nginx 的安装方式可以有多种,如果是RedHat系类:Redhat、Centos、Fedora等,可以尝试用yum 命名安装。Debian系类:Debian、Ubuntu等用 apt-get命名安装。 使用安装包安装的方式可以参考博客园的相关文章介绍。我使用的是也是nginx-1.6.2.tar.gz。 上传到/usr/local/后解压,解压的后文件夹为:nginx-1.6.2,也可以创建link 文件夹。不过用途不大,后面需要单独配置nginx 路径的地方很少。具体安装方式请参考博客园的博客说明。注意:
这篇博客有关安装nginx 依赖包PCRE之后出现的问题:

./nginx: error while loading shared libraries: libpcre.so.1: cannot open shared object file: No such file or directory

所给的链接地址是错误的。更正下解决办法:
64位系统:

ln -s /usr/local/lib/libpcre.so.1 /lib64

32 位系统:

ln -s /usr/local/lib/libpcre.so.1 /lib

tomcat实例配置

拷贝tomcat 目录下面的文件夹:conf, logs,temp, work到我们创建的文件夹里面就命名为:server1。即server1包含如下文件夹。

conf/   logs/  temp/ work/

修改conf/server.xml

    <?xml version='1.0' encoding='utf-8'?>    <Server port="8111" shutdown="SHUTDOWN">  <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />  <Listener className="org.apache.catalina.core.JasperListener" />  <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />  <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />  <GlobalNamingResources>    <Resource name="UserDatabase" auth="Container"              type="org.apache.catalina.UserDatabase"              description="User database that can be updated and saved"              factory="org.apache.catalina.users.MemoryUserDatabaseFactory"              pathname="conf/tomcat-users.xml" />  </GlobalNamingResources>  <Service name="Catalina">  <Connector  port="8101" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443"  URIEncoding="utf-8" useBodyEncodingForURI="true"/>    <Engine name="Catalina" defaultHost="localhost" jvmRoute="s1">      <Realm className="org.apache.catalina.realm.UserDatabaseRealm"             resourceName="UserDatabase"/>      <Host name="localhost"  appBase="webapps"            unpackWARs="false" autoDeploy="false"            xmlValidation="false" xmlNamespaceAware="false">          <Context path="/xxx" docBase="/xxx/App/xxx/appName" reloadable="true"/>        </Host>    </Engine>  </Service></Server>

这里需要配置的地方有这么几处:port=”8111” shutdown=”SHUTDOWN”(设置关闭实例的端口号),
Connector port=”8101” protocol=”HTTP/1.1”(设置实例启动时的端口),Context path=”/xxx” docBase=”/xxx/App/xxx/appName” reloadable=”true” 配置实例的访问地址,与实例包的路径。多个实例可以创建多个不同的server2,server3,server4, …。需要修改启动关闭实例端口号每个实例唯一,另外需要指定不同的实例包的访问路径。

配置nginx 负载均衡,到nginx 安装文件夹 /usr/local/nginx-1.6.2/conf。 编辑nginx.conf 文件夹。在里面的http 的花括号里面添加一行 include domains/*; 该行表示会加载nginx.conf 同目录下面的domains下面的配置文件。 然后在 /usr/local/nginx-1.6.2/conf/ 下创建文件夹 domains, cd 到 domains 下面 创建文件 vi appname.conf,将下面粘贴到里面并保存:

upstream appname {    server  127.0.0.1:8101;#这里的端口号需要和实例在server.xml配置的启动端口一致}server        {           listen   80;           server_name   appname;           access_log    /export/Logs/nginx/appname/access.log;           location /appname {                proxy_pass     http://appname;             }        }

配置文件添加完成之后,/usr/local/nginx-1.6.2/bin/nginx -t 可以检查下配置文件是否配置对了。如果没有问题就启动:

 /usr/local/nginx-1.6.2/bin/nginx

重启:

 /usr/local/nginx-1.6.2/bin/nginx -s reload

应用启动脚本配置

将实例的war包上传到指定的/xxx/App/xxx/appName 路径下面解压。启动脚本start.sh:

#!/bin/bashexport CATALINA_HOME=/usr/local/tomcatexport CATALINA_BASE=/xxx/domains/appName/server1declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Ddeploy.instance.logs.path=/xxx/log/appName/server1"###JAVAexport JAVA_HOME=usr/local/javaexport JAVA_BIN=usr/local/java/binexport PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/binexport CLASSPATH=.:/lib/dt.jar:/lib/tools.jarexport  JAVA_OPTS=" -server -Xms256m -Xmx512m -XX:MaxPermSize=256m -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300"export JAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS$CATALINA_HOME/bin/startup.sh -config $CATALINA_BASE/conf/server.xml

停止脚本stop.sh:

    #!/bin/bashexport CATALINA_HOME=/usr/local/tomcatexport CATALINA_BASE=/xxx/domains/appName/server1declare -x CATALINA_OPTS="-server -Xdebug -Xnoagent -Djava.compiler=NONE -Ddeploy.instance.logs.path=/xxx/log/appName/server1"###JAVAexport JAVA_HOME=usr/local/javaexport JAVA_BIN=usr/local/java/binexport PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/binexport CLASSPATH=.:/lib/dt.jar:/lib/tools.jarexport  JAVA_OPTS="-server -Xms256m -Xmx512m -XX:MaxPermSize=256m -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300"export JAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS$CATALINA_HOME/bin/startup.sh -config $CATALINA_BASE/conf/server.xmlps -aef | grep java|grep appname/server1| grep -v grep | sed 's/ [ ]*/:/g' |cut -d: -f2|kill -9 `cat`

权限设置

上面配置完毕之后一般还会对相关的软件和应用配置属于自己的用户和组权限。例如配置:tomcat 用户,java用户,nginx用户。并将他们都加入到 sa用户组里面。 给相关对应的文件和应用也设置相关的权限。后面添加其他用户到sa,就可以管理发布各种应用了。

1 0