nginx

一、应用场景

对于一个大型网站来说,负载均衡是永恒的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可用性,又保证响应足够快,给用户很好的体验。随着硬件技术的迅猛发展,越来越多的负载均衡硬件设备涌现出来,如F5 BIG-IP、Citrix NetScaler、Radware等等,虽然可以解决问题,但其高昂的价格却往往令人望而却步,因此负载均衡软件仍然是大部分公司的不二之选。Nginx作为webserver的后起之秀,其优秀的反向代理功能和灵活的负载均衡策略受到了业界广泛的关注。

Nginx进程基于Master + Slave(worker)多进程模型,自身具有非常稳定的子进程管理功能。在Master进程分配模式下,Master进程永远不进行业务处理,只是进行任务分发,从而达到Master进程的存活高可靠性。

Keepalived是Linux下面实现VRRP 备份路由的高可靠性运行件。基于Keepalived设计的服务模式能够真正做到主服务器和备份服务器故障时IP瞬间无缝交接。二者结合,可以构架出比较稳定的软件负载均衡方案。

操作步骤

1. Nginx安装配置

1.1 系统基础配置

关闭selinux
 # vi /etc/selinux/config
……
SELINUX=disabled
……

关闭防火墙,在Centos6.5中
 # service iptables stop
 # chkconfig iptables off

关闭防火墙,在Centos7中
 # systemctl stop firewalld
 # systemctl disable firewalld

修改系统文件打开限制数量,增加在配置文件最后
 # vi /etc/security/limits.conf
* soft noproc 65535
* hard noproc 65535
* soft nofile 409600
* hard nofile 409600

重启机器
 # reboot

1.2 设置时间同步

安装ntpdate , ntpd
 # yum install -y ntpdate ntp pcre-devel pcre

复制时区至本地时区
 # cp /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

时间同步,ip请改成可用的时间服务器的ip地址,并写入时间戳
 # ntpdate ip  
 # hwclock -w

开启ntpd服务,在Centos6中
 # service start ntpd
 # service enable ntpd

开启ntpd服务,在Centos7中
 # systemctl start ntpd
 # systemctl enable ntpd

1.3 安装软件包

安装包下载地址
http://pan.baidu.com/s/1hrUHlOw
安装依赖组件
 # yum install zlib zlib-devel
 # yum install pcre-devel

将安装包中的文件拷贝到服务器,并解压缩安装包
 # tar -zxvf nginx-1.8.1.tar.gz

然后进入目录进行安装
 # cd nginx-1.8.1
 #./configure --prefix=/opt/nginx1.8.1
 # make
 # make install
 # ln  -sf  /opt/nginx1.8.1  /usr/local/nginx
 # echo 'export PATH=/usr/local/nginx/sbin:$PATH' >> /etc/profile && source /etc/profile

1.4 配置服务

创建启动脚本
将启动脚本文件夹中的nginx文件发送到服务器中并
 # cp nginx  /etc/init.d/
 # chmod +x /etc/init.d/nginx

修改用户权限
 # useradd -r -M nginx
 # mkdir  -p  /var/log/nginx
 # chown nginx  -R /var/log/nginx

注册启动服务
 # chmod a+x /etc/init.d/nginx
 # chkconfig --add nginx
 # chkconfig nginx on

1.5 启动服务

 # service nginx start

2. 配置高可用

注:在主备两台Nginx服务器上都要安装Keepalived。

2.1 安装Keepalived

安装依赖包,将keepalived6(Centos6环境中) 或 keepalived7(Centos7中)传送到服务器
 # tar zxvf keepalived6.tar.gz     或tar zxvf keepalived7.tar.gz
 # yum localinstall keepalived/*.rpm -y

将软件源中的keepalived-1.2.16.tar.gz传送到服务器并解压
 # tar zxvf keepalived-1.2.16.tar.gz

编译安装
 # cd keepalived-1.2.16
 # ./configure
 # make
 # make install

配置服务
 # cp /usr/local/sbin/keepalived /usr/sbin/
 # cp /usr/local/etc/rc.d/init.d/keepalived /etc/init.d/
 # cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/
 # chmod +x /etc/init.d/keepalived
 # chkconfig --add keepalived
 # chkconfig keepalived on
 # mkdir /etc/keepalived

2.2 配置主服务器

创建配置文件
 # vi /etc/keepalived/keepalived.conf

修改配置文件并保存
! Configuration File for keepalived
global_defs {
   notification_email {
     #[email protected]
   }
   #notification_email_from [email protected]
   #smtp_server smtp.example.com
   #smtp_connect_timeout 30
   router_id nginx_master
}
vrrp_script chk_http_port {
    script "

2.3 配置备用服务器

创建配置文件
 # vi /etc/keepalived/keepalived.conf

修改配置文件并保存
! Configuration File for keepalived
global_defs {
   notification_email {
     #[email protected]
   }
   #notification_email_from [email protected]
   #smtp_server smtp.example.com
   #smtp_connect_timeout 30
   router_id nginx_backup
}

vrrp_script chk_http_port {
    script "

2.4 安装验证

浏览器访问http://ip出现以下提示说明nginx正常运行

nginx_第1张图片

查看keepalived绑定虚拟ip的情况
 # ip a

二、应用场景

当在使用nginx的时候,不是仅仅部署一个空的nginx就可以了,而是需要和具体的业务系统接入。

操作步骤

1. 配置Nginx

配置conf:
 # vi /usr/local/nginx/conf/nginx.conf

配置文件上传模块,在配置文件中找到如下章节位置,修改红色标注部分为生产环境中服务器IP地址,
#####################文件上传服务器配置(项目组生产环境需要修改)-START############
upstream epointjweb_file {
server 192.168.202.5:8090; #配置文件上传下载服务器
}

#####################文件上传服务器配置-END########################
配置项目上负载服务器,在配置文件中找到如下配置节点,根据项目的应用location和upstream节点。
#####################项目组业务服务器配置-START###########################
#注:以下是示例配置,结合项目实际具体配置

upstream epointjweb {
server 192.168.202.4:8090; #WEB服务器IP
server 192.168.202.5:8090;
}

#####################项目组业务服务器配置-END############################
##################项目组应用URL配置-START##########################

#注:以下是实例配置,结合项目实际具体配置
location /appurl { # appurl为访问应用的URL
         proxy_pass  http://epointjweb; 这里红色标注的为对应后端RS服务器upstream名称
  }

##################项目组应用URL配置-END##########################
重启服务

# service nginx restart

2. 配置Session共享

配置应用xml增加以下过滤器
注:此过滤器必须是web.xml中的第一个过滤器!



     ClusteredSessionFilter
     ClusteredSessionFilter
 com.epoint.clustered.session.ClusteredSessionFilter
 
    maxInactiveInterval
    1800
 



ClusteredSessionFilter
/*


 在配置Session共享之前请按照框架部署方案正确安装与配置redis,检查redis是否添加了密码配置和绑定IP配置,配置的步骤参照Redis的部署文档。建议项目在开始就将redis加入密码,因为没有密码的redis在系统漏洞扫描中会认为是高危漏洞被扫描出。
 配置property缓存服务
#redis连接字符串配置:redis://host:port/dbIndex或者 redis://user:password@host:port/dbIndex
redisSetting= redis://username:[email protected]:6379/0

#注:这里的用户名为epoint,password填写redis的密码,ip地址替换为redis服务器地址,端口为redis端口,默认为6379,不可为空必须填写;dbindex为数据库标识,集群内相同的应用填写同一个dbindex以达到session共享的目的。

#框架缓存实现策略,当配置了上面redis参数时,框架缓存实现将会切换到redis,默认是eh的.当你想强制指定缓存实现策略时,你可以配置下面的参数值为redis、eh
cacheImpl=eh

连接字符串配置说明:

参数 参考值 说明
host redis缓存数据库服务器地址,高可用模式下需配置为keepalived虚拟ip
port 6379 监听端口,默认端口为6379
user 用户名
password 密码
dbIndex 0 数据库示例标识,redis默认开启了16个数据库,即0~15

3. FAQ

3.1 编译异常

安装时缺少c编译器:configure: error: no acceptable C compiler found in $PATH?
 # yum install gcc

安装时缺少pcre、gzip、openssl等类库?
 # yum install pcre-devel
 # yum install zlib zlib-devel
 # yum install openssl openssl-devel

3.2 安装异常

安装nginx时提示Public key for nginx-1.8.0***.rpm is not installed?
加上"--nogpgcheck"参数
 # yum -y localinstall nginx-1.8.0-1.el6.ngx.x86_64.rpm --nogpgcheck

安装keepalived时提示configure: error: No SO_MARK declaration in headers?
加上"--disable-fwmark"参数
 # ./configure --disable-fwmark

3.3 配置防火墙

如果必须开启防火墙,请开启必要的端口。
注:规则需添加在22端口规则后reject规则之前!
配置端口
 # vi /etc/sysconfig/iptables
-A INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT

重启防火墙
 # service iptables restart

你可能感兴趣的:(通用组件)