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