Nginx安装,配置实现Tomcat负载均衡

       Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,具备占有内存少,并发能力强的特点。在高连接并发的情况下,是Apache服务器不错的替代品。

1.安装配置

1.1依赖安装

yum install pcre pcre-devel

1.2安装nginx

# 解压并进入解压目录
tar -zxvf nginx-1.9.5.tar.gz
cd nginx-1.9.5
# 配置安装在默认的/usr/local目录下
./configure
# 编译安装
make && make install

1.3拷贝配置文件至/etc/nginx

cp -r /usr/local/nginx/conf/nginx.conf /etc/nginx  

1.4将nginx定义为服务

# 编辑nginx启动脚本
vi /etc/init.d/nginx

 输入如下Shell命令

#!/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: /var/run/nginx.pid
# config: /usr/local/nginx/conf/nginx.conf
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/etc/nginx/nginx.conf
nginx_pid=/var/run/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 /var/run/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

 完成后可通过如下命令对nginx进行启动

service nginx start

1.5添加开机启动

vi /etc/rc.d/rc.local

添加如下配置:

# tomcat启动命令
/usr/local/tomcat/bin/startup.sh
# 加载指定的配置后启动nginx
/usr/local/nginx/sbin/nginx -c /etc/nginx/nginx.conf
/usr/local/nginx/sbin/nginx

 1.6测试

在浏览器中输入http://localhost,若展现出欢迎界面,则说明配置成功

二、Nginx实现Tomcat的负载均衡

 2.1实现目标

 目标清单:

1)210、211和212三台主机上各安装一个Tomcat,利用统一的8080接口提供服务;

2)210和211还各安装了一个Nginx,利用统一的80接口提供请求分发并实现Tomcat负载均衡的目的;

3)可利用http://192.168.31.210和http://192.168.31.211两个http地址随机访问到最底层的Tomcat,但在实际的生产环境中,对外只提供一个url地址,因此需要keepalived来提供VIP(192.168.31.200)来实现;

4)keepalived安装在210和211两台主机上,它还有一个目的就是监控本机Nginx的运行状态。例如:当210的Nginx处于不可运行状态时,keepalived将VIP飘逸到211,使211上的keepalived继续利用VIP对外提供访问入口。
2.2实现过程

2.2.1在各主机上安装Tomcat

(此处省略一千字......)

2.2.2在210和211上安装配置Nginx

    安装已在第1节中实现,直接进行Nginx的配置。

vi /etc/nginx/nginx.conf

    主要的配置内容如下:

worker_processes  1;

# 指定error日志和pid文件的路径
error_log  /home/logs/nginx/error.log;
pid          /home/logs/nginx/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;

    # 指定了日志则必须同时指定日志的格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';
    # 指定access日志文件的路径
    access_log  /home/logs/nginx/access.log  main;
    sendfile        on;
    keepalive_timeout  65;

    # 定义负载组
    upstream upstream1 {
         # 对应具体若干个Tomcat服务器的访问地址
         server   192.168.31.210:8080;
         server   192.168.31.211:8080;
         server   192.168.31.212:8080;
    }
    server {
        listen       80;
        # 服务器host,不同的主机有不同的名称
        server_name  192.168.31.211;

        # 定义根路径访问规则
        location / {
             root   html;
             index  index.html index.htm;
             # 访问地址,upstream1最终会被负载组中的某个server替换成真实的地址
             proxy_pass         http://upstream1;
             proxy_set_header   Host             $host;
             proxy_set_header   X-Real-IP        $remote_addr;
             proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
             client_max_body_size  100m;   
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
     }
}

    由于在Nginx的启动脚本中修改了所加载的配置文件路径为/etc/nginx(默认为/usr/local/nginx/conf),因此在启动之前还需要将mime.types文件拷贝于此

cp /usr/local/nginx/conf/mime.types /etc/nginx

 2.2.3重启210和211上的Nginx后测试

service nginx restart

1)输入http://192.168.31.210和http://192.168.31.211后,如果在浏览器中能呈现出Tomcat的首页,说明启动成功;

2)查看/home/logs/nginx目录,如果出现pid和access.log文件,则说明配置的文件路径有效;

3)见下图:


     红框中的信息是我在tomcat首页中自己加的,反复刷新页面,如果IP地址在210 - 212之间变化,则说明Nginx的负载均衡配置成功。 3.加入Keepalived实现灾备切换 3.1安装依赖
yum install popt-devel
yum install gcc gcc-devel
yum install openssl openssl-devel
 3.2安装Keepalived
# 解压并进入安装目录
tar -zxvf keepalived-1.1.19.tar.gz
cd keepalived-1.1.19
# 配置,指定配置文件的目录和安装目录
./configure --sysconf=/etc --prefix=/usr/local/keepalived
# 编译安装
make && make install
 3.3设置开机启动
# 拷贝启动脚本到/usr/sbin/
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
 vi /etc/rc.d/rc.local 后加入如下启动命令:
/etc/rc.d/init.d/keepalived start
    启动
service keepalived start
    重启系统后,输入如下命令:
service keepalived status
    如果出现如下示例信息:
    keepalived (pid  1897) 正在运行...
    则说明设置成功

猜你喜欢

转载自code727.iteye.com/blog/2248384