首页 > 其他 > 详细

Nginx&Keepalived

时间:2019-08-07 23:37:37      阅读:106      评论:0      收藏:0      [点我收藏+]

Nginx安装

1.下载依赖库
    yum install -y gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel
2.使用configure脚本自动生成Makefile文件 --prefix 指定安装目录
    ./configure --prefix=/usr/local/software/nginx
3.编译安装
    make && make install
4.命令
    4.1 sbin/nginx     启动nginx
    4.2 sbin/nginx -s quit  关闭 nginx
    4.3 sbin/nginx -s reload     重启 nginx ,当 nginx 配置文件修改后,可以重启生效
    4.4 sbin/nginx -v   查看 nginx  版本
    4.5 sbin/nginx -t    当修改配置文件后,可查看配置文件(nginx.conf)是否正确
    4.6 sbin/nginx -h   查看帮助文档
5.配置
    5.1 在主模块中   
     daemon off | on ;   默认 on 
     是否已守护进程的方式运行 nginx  ,守护进程是指脱离终端并且在后头运行的进程,关闭守护进程执行的方式可以让我们方便调试 nginx
    
    master_process off | on ;  默认 on
    是否以 Master/Worker 方式进行工作,在实际的环境中 nginx是以一个Master进程管理多个Worker进程的方式运行的,关闭后,nginx就不会 fork 出
    Work子进程来处理请求,而是用Master自身进程处理请求 work_process  number 默认 1  ,在Master/Worker运行方式下,worker进程的数目,一般情况     下与内核CPU数目相等

    worker_process  number默认为 1

vim nginx.conf
   http {
        upstream westos { #调度方法,设置它为westos
        ip_hash; #哈希算法
     server 172.25.30.2:80; #real server1
        server 172.25.30.3:80; #real server2
        }
         include       mime.types;
         default_type  application/octet-stream;
         server {
                 listen 80; #端口为80端口
                 server_name www.westos.org;
                 # 访问域名

                 location /{ #当客户端访问时,调度站直接扔给westos来进行调度
                 proxy_pass http://westos;
          }
  }

-----------------------------------------------------------------------------------------------
1.配置反向代理
server {
    listen       80;
    server_name  nginx-01.xiaoniu.cn;
   #172.16.203.101/hello.html
location / {
    root html;
        proxy_pass http://192.168.0.21:8080;
    }
}

2.动静分离
#动态资源 index.jsp
location ~ .*\.(jsp|do|action)$ {
    proxy_pass http://tomcat-01.xiaoniu.cn:8080;
}

#静态资源
location ~ .*\.(html|js|css|gif|jpg|jpeg|png)$ {
    expires 3d;
}


3.负载均衡池
在http这个节下面配置一个叫upstream的,后面的名字可以随意取,但是要和location下的proxy_pass http://后的保持一致。
http {
   upstream tomcats { 
        server 172.16.203.20:8080 weight=1;
        server tomcat-02.xiaoniu.cn:8080 weight=1;
        server tomcat-02.xiaoniu.cn:8080 weight=1;
   }
   location ~ .*\.(jsp|do|action) {
       proxy_pass http://tomcats;
   }
}


4.nginx配置图片服务器
http://192.168.31.62/images/8.jpg

location /images {
       root /usr/local/nginx_images;
}

当浏览器请求 http://192.168.31.62/images/8.jpg 图片地址的时候 会 将 /images/8.jpg URI资源路径拿出来,然后与 root 位置进行结合
    /usr/local/nginx_images
    /images/8.jpg
    /usr/local/nginx_images/images/8.jpg

https://www.cnblogs.com/kevingrace/p/6138185.html

Keepalived安装

1.解压
    tar -zxvf keepalived-2.0.15.tar.gz -C /usr/local/software/
2.创建目录
    mkdir keepalived
3.使用configure脚本自动生成Makefile文件 --prefix 指定安装目录
    ./configure --prefix=/usr/local/software/keepalived
4.编译安装
    make && make install
5.启动前相关设置
    mkdir /etc/keepalived
    cp /usr/local/software/keepalived/etc/keepalived/keepalived.conf  /etc/keepalived/
    cp /usr/local/software/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    cp /usr/local/software/keepalived-2.0.15/keepalived/etc/init.d/keepalived /etc/rc.d/init.d/
    cp /usr/local/software/keepalived/sbin/keepalived /usr/sbin/

    添加keepalived到开机启动
    chkconfig --add keepalived  
    chkconfig keepalived on

6.配置
MASTER
global_defs {
    router_id pengyy62
}
vrrp_instance VI_1 {
    state MASTER
    interface ens33
    mcast_src_ip 192.168.31.62
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.31.61
    }
}


BACKUP节点
global_defs {
    router_id pengyy63
}
vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    mcast_src_ip 192.168.31.63
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.31.61
    }
}

router_id 是路由标识,在一个局域网里面应该是唯一的 运行keepalived的机器的一个标识,通常可设为hostname;

vrrp_script chk_http_port   #检测nginx服务是否在运行。有很多方式,比如进程,用脚本检测等等
script "/etc/keepalived/chk_nginx.sh"    #这里通过脚本监测
interval 2   #脚本执行间隔,每2s检测一次
weight -5                    #脚本结果导致的优先级变更,检测失败(脚本返回非0)则优先级 -5
fall 2                    #检测连续2次失败才算确定是真失败。会用weight减少优先级(1-255之间)
rise 1                    #检测1次成功就算成功。但不修改优先级


vrrp_instance VI_1{...} #这是一个VRRP实例,里面定义了keepalived的主备状态、接口、优先级、认证和IP信息; keepalived在同一virtual_router_id中                            priority(0-255)最大的会成为master,也就是接管VIP,当priority最大的主机发生故障后次priority将会接管;
state MASTER    #指定keepalived的角色,MASTER表示此主机是主服务器,BACKUP表示此主机是备用服务器。注意这里的state指定instance(Initial)的初始状           态,就是说在配置好后,这台服务器的初始状态就是这里指定的,但这里指定的不算,还是得要通过竞选通过优先级来确定。如果这里设置           为MASTER,但如若他的优先级不及另外一台,那么这台在发送通告时,会发送自己的优先级,另外一台发现优先级不如自己的高,那么他会            就回抢占为MASTER
interface定义使用的接口,这里我的服务器用的网卡都是 ens33,根据实际来填写,
mcast_src_ip  服务器ip
virtual_router_id是虚拟路由ID标识,一组的keepalived配置中主备都是设置一致,priority是优先级,数字越大,优先级越大,
advert_int 1                 #设定MASTER与BACKUP负载均衡器之间同步检查的时间间隔,单位是秒
authentication {             #设置验证类型和密码。主从必须一样
        auth_type PASS           #设置vrrp验证类型,主要有PASS和AH两种
        auth_pass 1111           #设置vrrp验证密码,在同一个vrrp_instance下,MASTER与BACKUP必须使用相同的密码才能正常通信
    }
auth_type是认证方式,auth_pass是认证的密码。 
virtual_ipaddress {...}定义虚拟IP地址,可以配置多个IP地址,这里我定义为192.168.31.61,绑定了 ens33 的网络接口,虚拟接口 ens33:1 
如果有多个VIP,继续换行填写


7.启动
service keepalived start    

8.配置keepalived心跳检查

MASTER
global_defs {
    router_id pengyy62
}

vrrp_script chk_http_port {         
    script "/etc/keepalived/chk_nginx.sh"   
    interval 2                      
    weight -5                       
    fall 2                   
    rise 1                  
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    mcast_src_ip 192.168.31.62
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.31.61
    }
}


BACKUP节点
global_defs {
    router_id pengyy63
}

vrrp_script chk_http_port {         
    script "/etc/keepalived/chk_nginx.sh"   
    interval 2                      
    weight -5                       
    fall 2                   
    rise 1                  
}

vrrp_instance VI_1 {
    state BACKUP
    interface ens33
    mcast_src_ip 192.168.31.63
    virtual_router_id 51
    priority 99
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.31.61
    }
}

--检测脚本
vim /etc/keepalived/chk_nginx.sh
#!/bin/bash
counter=$(ps -C nginx --no-heading|wc -l)
if [ "${counter}" = "0" ]; then
    /usr/local/software/nginx/sbin/nginx     --nginx命令启动路径
    sleep 2
    counter=$(ps -C nginx --no-heading|wc -l)
    if [ "${counter}" = "0" ]; then
        /etc/init.d/keepalived stop
    fi
fi

chmod -R 777 chk_nginx.sh

分别在  pengyy62  pengyy63  启动nginx  和 keepalived
sbin/nginx
keepalived

https://www.cnblogs.com/kevingrace/p/6138185.html

Nginx&Keepalived

原文:https://www.cnblogs.com/pengyy/p/11318229.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!