您的位置:首页 > 运维架构 > Tomcat

linux下nginx和tomcat负载均衡配置

2017-07-26 18:24 218 查看

一、linux安装软件常用方法

1、rpm(或pkg)安装,类似于windows安装程序,是预编译好的程序。

   a.使用的是通用参数编译,配置参数不是最佳。

   b.可控制性不强,比如对程序特定组件的定制性安装

   c.通常安装包间有复杂依赖关系,操作比较复杂

   d.安装简单,出错几率低。

2、yun(或apt-get)安装,改良版的rpm,自动联网下载安装包,自动管理依赖关系

3、编译安装(方式在各类linux发行版中差异不大)

   a.可控性强,config时可根据当前系统环境优化参数,可定制组件及安装参数

   b.易出错,难度略高

 

二、linux下编译安装nginx

1.下载地址:

http://nginx.org/en/download.html
 

2.解压

tar -zxvf nginx-1.12.1.tar.gz
 

3.检查和安装依赖项

yum -y install gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

 

4.运行configure命令  (pre是指定安装目录)

./configure --pre=/home/szjz/nginx
 

5.make && make install

 

6.启动nginx

./home/szjz/nginx/sbin/nginx
 

7.查看nginx进程

ps aux|grep nginx
 

8.设置开机运行

CenterOS6与CenterOS7是有区别的,这是个很大的坑!!!

 

(1)在centerOS6下:

1) 首先,在linux系统的/etc/init.d/目录下创建nginx文件,使用如下命令:
vi /etc/init.d/nginx
 
在脚本中添加如下命令:
#!/bin/bash
# nginx Startup script for the Nginx HTTP Server
# it is v.0.0.2 version.
# chkconfig: - 85 15
# description: Nginx is a high-performance web and proxy server.
#       It has a lot of features, but it's not for everyone.
# processname: nginx
# pidfile: /usr/local/nginx/logs/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/home/szjz/nginx/sbin/nginx
nginx_config=/home/szjz/nginx/conf/nginx.conf
nginx_pid=/home/szjz/nginx/logs/nginx.pid
RETVAL=0
prog="nginx"
# Source function library.
. /etc/rc.d/init.d/functions
# Source networking configuration.
. /etc/sysconfig/network
# Check that networking is up.
[ "${NETWORKING}" = "no" ] && exit 0
[ -x $nginxd ] || exit 0
# Start nginx daemons functions.
start() {
if [ -e $nginx_pid ];then
  echo "nginx already running...."
  exit 1
fi
  echo -n $"Starting $prog: "
  daemon $nginxd -c ${nginx_config}
  RETVAL=$?
  echo
  [ $RETVAL = 0 ] && touch /var/lock/subsys/nginx
  return $RETVAL
}
# Stop nginx daemons functions.
stop() {
    echo -n $"Stopping $prog: "
    killproc $nginxd
    RETVAL=$?
    echo
    [ $RETVAL = 0 ] && rm -f /var/lock/subsys/nginx /home/szjz/nginx/logs/nginx.pid
}
# reload nginx service functions.
reload() {
  echo -n $"Reloading $prog: "
  #kill -HUP `cat ${nginx_pid}`
  killproc $nginxd -HUP
  RETVAL=$?
  echo
}
# See how we were called.
case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
reload)
    reload
    ;;
restart)
    stop
    start
    ;;
status)
    status $prog
    RETVAL=$?
    ;;
*)
    echo $"Usage: $prog {start|stop|restart|reload|status|help}"
    exit 1
esac
exit $RETVAL
 
2) 保存脚本文件后设置文件的执行权限:

chmod a+x /etc/init.d/nginx
 

将nginx服务加入chkconfig管理列表:

chkconfig --add /etc/init.d/nginx

 

再次查看
chkconfig --list
显示的情况应该是这样的
tomcat 0:off 1:off 2:off 3:off 4:off 5:off 6:off

 

然后chkconfig
nginx on设置开机启动
chkconfig --list
tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off

这是后看到的情况变了,这时候就达到了开机就启动nginx服务了!
 

 

(2)centerOS7以上:

centos 7以上是用Systemd进行系统初始化的,Systemd
是 Linux
系统中最新的初始化系统(init),它主要的设计目标是克服
sysvinit 固有的缺点,提高系统的启动速度。关于Systemd的详情介绍在这里

Systemd服务文件以.service结尾,比如现在要建立nginx为开机启动,如果用yum
install命令安装的,yum命令会自动创建nginx.service文件,直接用命令

设置开机启动即可。
在这里我是用源码编译安装的,所以要手动创建nginx.service服务文件。
开机没有登陆情况下就能运行的程序,存在系统服务(system)里,即:

/lib/systemd/system

 

具体步骤如下:

 

1)在系统服务目录里创建nginx.service文件

vi /lib/systemd/system/nginx.service

内容如下:

[Unit]
Description=nginx
After=network.target
  
[Service]
Type=forking
ExecStart=/home/szjz/nginx/sbin/nginx
ExecReload=/home/szjz/nginx/sbin/nginx
-s reload
ExecStop=/home/szjz/nginx/sbin/nginx
-s quit
PrivateTmp=true
  
[Install]
WantedBy=multi-user.target
 

2)设置开机启动

systemctl enable nginx.service

 

3)其他命令

启动nginx服务

systemctl start nginx.service

 

查看服务当前状态

systemctl status nginx.service

 

查看所有已启动的服务

systemctl list-units --type=service

9.其他nginx的命令

 
重启: ./nginx -s reload
关闭: ./nginx -s stop
强杀: kill -9 (nginx进程id)

三、安装jdk

1、下载jdk

2、解压

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

3、设置环境变量

vi /etc/profile.d/java.sh  (每次linux启动时会去检查这个目录下的sh文件)
JAVA_HOME=/home/szjz/jdk1.7.0_79
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
 
:wq!  保存
 

4.让环境变量生效

source /etc/profile (或者重启linux系统)
 

5.检验是否成功

echo $JAVA_HOME
java  -version
 

四、安装tomcat

1、下载

2、解压

tar -zxvf  apache-tomcat-7.0.68.tar.gz

3.启动tomcat

./bin/startup.sh
 

4.查看日志

在logs/下
cat catalina.out  (或 tail -f catalina.out)
 

5.其他操作

停止tomcat   ./bin/shutdown.sh
 

6.设置开机启动

 
在centos的/etc/init.d/tomcat中配置如下

 

Vi /etc/init.d/tomcat
--------------tomcat 文件 START-------------------
#!/bin/bash
#
# tomcat startup script for the Tomcat server
#
# chkconfig: 345 80 20
# description: start the tomcat deamon
#
# Source function library
. /etc/rc.d/init.d/functions
prog=tomcat
#下面这句需要给成你自己的jdk路径(bin的上一层)
JAVA_HOME=/usr/java/jdk1.7.0_79
export JAVA_HOME
#下面这句需要给成你自己tomcat目录(bin的上一层)
CATALANA_HOME=/usr/local/yuzhilongx/apache-tomcat-7.0.62
export CATALINA_HOME
case "$1" in
start)
echo "Starting Tomcat..."
$CATALANA_HOME/bin/startup.sh
;;
stop)
echo "Stopping Tomcat..."
$CATALANA_HOME/bin/shutdown.sh
;;
restart)
echo "Stopping Tomcat..."
$CATALANA_HOME/bin/shutdown.sh
sleep 2
echo
echo "Starting Tomcat..."
$CATALANA_HOME/bin/startup.sh
;;
*)
echo "Usage: $prog {start|stop|restart}"
;;
esac
exit 0
--------------tomcat 文件 END-------------------

 

再把 tomcat 修改为可运行的文件
chmod a+x tomcat
查看服务器开机启动项情况查找tomcat的情况
chkconfig --list
如果没有找到tomcat项
使用chkconfig命令把 tomcat 命令加入到系统启动队列中: chkconfig --add tomcat
再次查看
chkconfig --list
显示的情况应该是这样的
tomcat 0:off 1:off 2:off 3:off 4:off 5:off 6:off
然后chkconfig tomcat on设置开机启动
chkconfig --list
tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off

这是后看到的情况变了,这时候就达到了开机就启动tomcat服务了!
 
 
 

7.访问tomcat

浏览器输入 http://192.168.7.103:8080  
如何内网正常但
还不能访问的话,尝试关闭linux的防火墙
 

8.关闭防火墙

centerOS6下
临时关闭:
service iptables  start/stop  

/etc/init.d/iptables stop  
出现三个OK,临时关闭成功!
 
永久关闭:
chkconfig iptables off

 
查看防火墙
命令: /etc/init.d/iptables status
关闭后查看状态,应该显示 firewall is not running
 
 
centerOS7下
临时关闭防火墙 sudo systemctl stop firewalld.service
开机关闭防火墙 sudo systemctl disable firewalld.service

 
 
查看默认防火墙状态
firewall-cmd --state

关闭后显示notrunning,开启后显示running

 
 
 
 

五、负载均衡

1.先讲下nginx的反向代理:

Nginx作为反向代理服务器,实现负载均衡。首先浏览器发起请求,到达Nginx,由Nginx将请求地址转发给相应的tomcat服务器,再由tomcat服务器将结果返回给Nginx,Nginx将结果再转发给浏览器。

在这过程中,对于浏览器来说,并不知道后端的存在,
相对于Tomact来说,当前的客户端是Nginx服务器。这就完成了一个代理的过程。

 

直接上nginx.conf

user  nobody;

worker_processes  1;

events {

    worker_connections  1024;

}

http {

    include mime.types;

    default_type application/octet-stream;

    server {

        listen       8090;

location / {

index index.html index.htm;

proxy_pass http://192.168.7.103:8080;
   }

    }

}

 

 

2.nginx的负载均衡:

按照第四个步骤安装了两台tomcat,分别是

192.168.0.103:8080

192.168.0.102:8081

 

直接上nginx.conf:

 

user  nobody;
worker_processes  1;
events {
    worker_connections  1024;
}
http {
    include mime.types;
    default_type application/octet-stream;

    #均衡策略
    #none 轮询(权重由weight决定)
    #ip_hash
    #fair (需要安装第三方插件)
    #url_hash
(需要安装第三方插件)
    upstream mytest{
# weight:权重,值越高负载越大
server 192.168.7.103:8080 weight=7;
 
# max_fails:达到指定次数认为服务器挂掉;
# fail_timeout:挂掉之后过多久再去测试是否已恢复
server 192.168.7.102:8081 weight=3 max_fails=2 fail_timeout=60s;  
    }
 
    server {
        listen       8090;
location / {
index index.html index.htm;
proxy_pass http://mytest;    }
    }
}
 

 
 
最后验证:
 




 
 
 
其他负载的策略类似。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: