ITPUX技术网

交流 . 资讯 . 分享
Make progress together!
Oracle数据库DBA高级工程师培训视频
Oracle数据库培训-备份恢复-性能优化-集群容灾
mysql数据库视频教程

Linux环境下使用Nginx做双机热备(glassfish)

内容发布:发条痞| 发布时间:2014-9-22 23:21:55
Linux环境下使用Nginx做双机热备
  Nginx ("engine x") 是一个高性能的 HTTP 和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。
  反向代理服务器:反向代理(Reverse Proxy)方式是指以代理服务器来接受internet/内网上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。
测试环境
服务器用途
os版本
安装softIP地址
Nginx前置代理服务器
Redhat5.7_86_64
Nginx-1.6.0
192.168.1.145
平台A机
Redhat5.4_86_64
glassfish\oracle\jdk192.168.1.88
平台B机
Redhat5.4_86_64
glassfish\oracle\jdk
192.168.1.117
一、Nginx安装

安装PCRE(Perl Compatible Regular Expressions)包
为了确保能在 Nginx 中使用正则表达式进行更灵活的配置,安装之前需要确定系统是否安装有 PCRE(Perl Compatible Regular Expressions)包。
安装GCC(GNU Compiler Collection,GNU编译器套装)
系统光盘上面找安装GCC相关的依赖包及GCC包,包名及安装顺序如下:
1.kernel-headers-2.6.18-274.el5.x86_64 .rpm
2.glibc-headers-2.5-65.x86_64 .rpm
3.glibc-devel-2.5-65.x86_64 .rpm
4.gcc-4.1.2-51.el5.x86_64.rpm

安装命令:
$rpm -ivh 包名
系统光盘上面找安装GCC-C++相关的依赖包及GCC-C++包,包名及安装顺序如下:
1.libstdc++-devel-4.1.2-51.el5.x86_64
2.gcc-c++-4.1.2-51.el5.x86_64

解压PCRE
#tar -xvf pcre-8.35.tar.gz
#cd pcre-8.35
检测安装环境是否达到安装要求
#./configure
编译安装
#make
#make install
安装nginx依赖包,包名及安装顺序如下:
1.e2fsprogs-devel-1.39-33.el5.x86_64.rpm
2.keyutils-libs-devel-1.2-1.el5.x86_64.rpm
3.libsepol-devel-1.15.2-3.el5.x86_64.rpm
4.libselinux-devel-1.33.4-5.7.el5.x86_64.rpm
5.krb5-devel-1.6.1-62.el5.x86_64.rpm
6.openssl-0.9.8e-20.el5.x86_64.rpm
7.openssl-devel-0.9.8e-20.el5.x86_64.rpm
8.pcre-devel-6.6-6.el5_6.1.x86_64.rpm

编译安装Nginx
#mkdir -p /usr/local/nginx
# ./configure --with-http_stub_status_module --prefix=/usr/local/nginx/    #定义安装路径为/usr/local/nginx
编译安装
#make
#make install
Nginx服务器搭建完毕后,可在浏览器里面输入http://IP验证Nginx是否安装成功
二、nginx配置
Nginx的配置文件在安装目录下的conf文件夹下面的nginx.conf,此处示例地址为/usr/local/nginx/conf,
代码示例,红色字体为需要修改或添加的部分:

#user nobody;
worker_processes 1;

#error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;

#pid logs/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_log logs/access.log main;

sendfile on;
#tcp_nopush on;

#keepalive_timeout 0;
keepalive_timeout 65;                                 

#gzip on;

upstream glassfish {                                         

server 192.168.1.117:8080 weight=10;              
server 192.168.1.88:8080 weight=10;
}


server {
listen 80;
server_name 192.168.1.105;


#charset koi8-r;

#access_log logs/host.access.log main;

location / {
root html;
index index.html index.htm;
proxy_pass
http//:glassfish;

proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 1;
proxy_read_timeout 1;
proxy_send_timeout 1;
}

#error_page 404 /404.html;

# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}

# proxy the PHP scripts to Apache listening on 127.0.0.1:80
#
#location ~ \.php$ {
# proxy_pass http://127.0.0.1;
#}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#
#location ~ \.php$ {
# root html;
# fastcgi_pass 127.0.0.1:9000;
# fastcgi_index index.php;
# fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name;
# include fastcgi_params;
#}

# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}


# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;

# location / {
# root html;
# index index.html index.htm;
# }
#}


# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;

# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;

# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;

# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;

# location / {
# root html;
# index index.html index.htm;
# }
#}

}


keepalive_timeout 65;                                     #删除该行
upstream glassfish {                                         #“glassfish”代表Nginx主机名,可自定义

server 192.168.1.117:8080 weight=10;             #两台短信平台主机的ip地址及访问端口
server 192.168.1.88:8080 weight=10;               #weight=10表示权重,两台都是10表示两台主机被分配访问的概率是一样的

server {
listen 80;                                                            
#Nginx服务器访问的端口
server_name 192.168.1.105;                              #Nginx服务器主机名或IP地址

location / {
root html;
index index.html index.htm;
proxy_pass http//:glassfish;                           
    #主机名,与上面的“upstream glassfish {”值相等  
proxy_set_header Host $host;      #反向代理服务器会向后端真实服务器发送请求,请求头中的host字段应为proxy_pass指令设置的服务器
proxy_set_header X-Real-IP $remote_addr;   #同上,向后方真实服务器传递真实访问IP地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #Nginx做反向代理和负载均衡时“X-Forwarded-For”信息头的处理
proxy_connect_timeout 1;          #当其中一台glassfish宕机时,访问超时1秒后会连接到另外一台服务器
proxy_read_timeout 1;  
proxy_send_timeout 1;
}

三、nginx命令

1、查看nginx进程
#ps -ef|grep nginx
说明:nginx运行时会有两个进程,一个是主进程,一个是工作进程,如下图,第一行是主进程,第二行是工作进程;工作线程的数量跟nginx.conf中的配置参数worker_processes有关,而worker_processes的值与服务器CPU数量相等。
file:///C:/Users/Administrator/AppData/Local/YNote/Data/song-yuxiang@foxmail.com/ec913f6536cd4f0092b1579c054ea3f8/clipboard.png
2、启动nginx
nginx的启动文件位于安装目录下的sbin目录下,改目录下只有一个启动文件
#cd /usr/local/nginx/sbin
#./nginx
3、重启、平滑启动nginx
#kill -HUP `cat /usr/local/logs/nginx.pid`
或者
#nginx -s reload

说明:平滑启动的意思是在不停止nginx的情况下,重启nginx,重新加载配置文件,启动新的工作线程,完美停止旧的工作线程。
安装目录下的nginx.pid存储目前nginx的工作进程,上面命令里面的"`"号为esc键下的~键,不是单引号。
4、完美停止nginx
#kill -quit `cat /usr/local/nginx/logs/nginx.pid `
说明:/usr/local/nginx/logs/nginx.pid文件里面存储nginx的进程ID,上面命令里面的"`"号为esc键下的~键,不是单引号。
四、nginx添加到开机启动、系统服务

#cd /etc/rc.d/init.d
#touch nginx
#vim nginx
贴入以下代码
#!/bin/sh
# chkconfig: 2345 90 10
# description: nginx management
# processname: nginx
NGINXPATH=/usr/local/nginx/sbin
NGINXPID=/usr/local/nginx/sbin/nginx.pid
export NGINXPATH
case $1 in
start)
echo 'begin to start nginx...'
cd ${NGINXPATH}
nohup ./nginx > /dev/null &
sleep 2
echo 'Done!'
;;
stop)
echo "begin to stop nginx..."
nohup kill -quit `cat /usr/local/nginx/logs/nginx.pid` > /dev/null 2>&1
sleep 2
echo 'Done!'
;;
restart)
echo "begin to stop nginx..."
nohup kill -quit `cat /usr/local/nginx/logs/nginx.pid` > /dev/null 2>&1
sleep 2
echo 'begin to start nginx...'
cd ${NGINXPATH}
nohup ./nginx > /dev/null &
sleep 2
echo 'Done!'
;;
*)
echo $"Usage:$0{start|stop|restart}"
exit 1
esac

#chmod u+x nginx
#chkconfig --add nginx
#chkconfig --list nginx
执行以下命令查看添加服务是否成功
#service nginx start
#service nginx stop
#service nginx reatart



下一篇:基于redis分布式缓存实现
回复

使用道具 举报

内容发布:sy7527951| 发布时间:2016-12-25 23:56:45
学习一下~~~~~~~~~~~~
回复

使用道具 举报

1框架
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表