1.先将 nginx上传到linux上
从http://nginx.org/download/上下载相应的版本(或者wget http://nginx.org/download/nginx-1.5.9.tar.gz直接在Linux上用命令下载)
2.解压nginx tar
3.先编译nginx
安装依赖包
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
执行编译
先进入 nginx的目录
执行
./configure
4.安装nginx
执行
make
make install
(make PREFIX=/usr/local/redis install指定路径安装)
5.启动nginx
cd nginx/sbin目录下
启动nginx
./nginx
6.将端口号80 放行
/sbin/iptables -I INPUT -p tcp --dport 80 -j ACCEPT
将该设置添加到防火墙的规则中
/etc/rc.d/init.d/iptables save
7.修改conf文件和window下一样
配置集群
1.新建两个目录 tomcat1 tomcat2 tomcat3
2.修改tomcat的端口 例:8180 8280 8380
3.解压nginx
修改nginx的 nginx.conf文件
在locatioin /(拦截所有请求) 下添加了反向代理
proxy_pass 代理服务器;
proxy_pass http://127.0.0.1:8080;
proxy_redirect default;
这是只是代理一台服务器
8.代理集群
需要在http节点上添加一个
upstream ithzk.com{
server 127.0.0.1:8080;
server 127.0.0.1:8090;
}
修改location /下的反向代理
proxy_pass http://ithzk.com
ps:
动态资源
location ~.*.(jsp|do|action)${
proxy_pass http://tomcats; 服务器组的逻辑组号
}静态资源
location ~.*.(html|js|css|gif|jpg|jpeg|png)${
expires 3d;
}服务器组
upstream tomcats{
server 127.0.0.1:8080 weight=1;
server 127.0.0.1:8090 weight=1;
server 127.0.0.1:8100 weight=1;
}
9.keepalived(实现服务高可用)
HA(Hign Available),高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点以及备用节点
9.1 下载keepalived 官网:http://keepalived.org
9.2 解压keepalived
tar -zxvf keepalived-1.2.19.tar.gz -C /usr/local
9.3 进入/usr/local/keepalived-1.2.19
cd /usr/local/keepalived-1.2.19
9.4 configure指定安装目录
./configure -prefix=/usr/local/keepalived
9.5 编译安装
make
make install
9.6 将keepalived添加到系统服务
a) 拷贝执行文件
cp /usr/local/keepalived/sbin/keepalived /usr/sbin/
b) 将init.d文件拷贝到etc下,加入开启启动项
cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
c) 将keepalived文件拷贝到etc下
cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
d) 创建keepalived文件夹
mkdir -p /etc/keepalived
e) 将keepalived配置文件拷贝到etc下
cp /usr/local/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/keepalived.conf
f) 添加可执行权限
chmod +x /etc/init.d/keepalived
g) 设置自启
chkconfig --add keepalived
chkconfig keepalived on
9.7 修改配置文件etc/keepalived/keepalived.conf
主服务器
global_defs {
}
vrrp_instance VI_1 {
state MASTER #指定A节点为主节点 备用几点上设置为BACKUP即可
interface eth0 #绑定虚拟IP的网络接口
virtual_router_id 51 #VRRP组名,两个节点的设置必须一样,以指明各个节点属于同一VRRP组
priority 100 #主节点的优先级(1~254),备用节点必须比主节点优先级低
advert_int 1 #组播信息发送间隔,两个节点设置必须一样
authentication { #设置验证信息,两个节点必须一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #指定虚拟IP,两个节点设置必须一样
#如果两个nginx的ip分别是192.168.33.61 | 62 则此处的虚拟IP跟这两个同一网段即可
192.168.33.64 /24 #虚拟IP
192.168.33.61 /24 #主服务器IP
192.168.33.62 /24 #从服务器IP
}
}
备用服务器
global_defs {
}
vrrp_instance VI_1 {
state BACKUP
interface eth0 virtual_router_id 51 priority 99 advert_int 1 authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.33.64 /24 #虚拟IP
192.168.33.61 /24 #主服务器IP
192.168.33.62 /24 #从服务器IP
}
}
ps:杀掉master上的keepalived进程,slave机器上的eth0网卡则会多出一个ip地址(ip addr),则说明备用服务器启动
9.8 配置keepalived心跳检查
由于keepalived并不和nginx耦合,keepalived提供一个机制,可以让用户自定义一个shell脚本去检测用户自己的进程,返回状态给keepalived
global_defs {
}
vrrp_script chk_health{
script "[[`ps -ef|grep nginx|grep -v grep|wc -l` -ge 2]]&&exit 0||exit 1"
interval 1 #每隔1s执行上述的脚本,去检测用户的进程nginx
weight -2
}
vrrp_instance VI_1 {
state MASTER
interface eth0 virtual_router_id 51 priority 100 advert_int 1 authentication {
auth_type PASS
auth_pass 1111
}
track_script {
chk_health
}
virtual_ipaddress {
192.168.33.64 /24 #虚拟IP
192.168.33.61 /24 #主服务器IP
192.168.33.62 /24 #从服务器IP
}
#自定义脚本
notify_master "/usr/local/keepalived/sbin/notify.sh master"
notify_backup "/usr/local/keepalived/sbin/notify.sh backup"
notify_fault "/usr/local/keepalived/sbin/notify.sh fault"
}
自定义检测异常调用脚本
vi /usr/local/keepalived/sbin/notify.sh
case "$1" in
master)
/usr/local/nginx/sbin/nginx
exit 0
;;
backup)
/usr/local/nginx/sbin/nginx -s stop
/usr/local/nginx/sbin/nginx
exit 0
;;
fault)
/usr/local/nginx/sbin/nginx -s stop
exit 0
;;
*)
echo 'Usage:notify.sh {master|backup|fault}'
exit 1
;;
esac