linux环境安装nginx及高可用

            注意:   阿里云云服务器不支持LVS虚机VIP技术啊,如果需要配置负载均衡,可以直接购买阿里云的负载均衡产品。

  • linux安装nginx
  1. 创建安装目录
    mkdir -p /usr/local/nginx
    cd /usr/local/nginx
  2. 下载nginx相关依赖, 或手动上传/usr/local/nginx目录下 
    wget http://www.zlib.net/zlib-1.2.11.tar.gz
    wget https://ftp.pcre.org/pub/pcre/pcre-8.40.tar.gz
    wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
    wget http://nginx.org/download/nginx-1.10.3.tar.gz
    注意,我这里是以前下载好上传上去的,可能版本会不一样....
    zlib-1.2.8.tar.gz
    pcre-8.36.tar.gz
    openssl-1.0.1j.tar.gz
    nginx-1.5.9.tar.gz
  3. 安装c++编译环境
    yum install gcc-c++
    提示输入y/N  
    2次都输入:y
  4. 安装、编译 
     a. openssl安装 
     
    // 可以使用openssl version查看是否安装过了,安装了可以直接跳过此步
    tar zxvf openssl-1.0.1j.tar.gz
    cd openssl-1.0.1j
    ./config && make && make install

     b. pcre安装
     
    tar zxvf pcre-8.36.tar.gz
    cd pcre-8.36
    ./configure && make && make install

     c. zlib安装
     
    tar zxvf zlib-1.2.8.tar.gz
    cd zlib-1.2.8
    ./configure && make && make install

     d. nginx安装
    tar zxvf nginx-1.5.9.tar.gz
    cd nginx-1.5.9
    ./configure && make && make install
  5. 添加软连接 
     
    ln -s /lib/libpcre.so.0.0.1 /lib/libpcre.so.1  // 32位系统
    
    ln -s /lib64/libpcre.so.0.0.1 /lib64/libpcre.so.1  // 64位系统
  6. 安装完成 ,启动nginx
     
    
    /usr/local/nginx/sbin/nginx   // 启动nginx
    
    ps axu | grep nginx           // 查看nginx是否启动成功
  7. 测试 
     
    curl http://localhost
    浏览器输入: http:192.168.5.128,  如果外网访问失败,关防火墙或者查看阿里云80端口是否配置了安全规则
     
  • ngin的相关命令
  1. 启动
    /usr/local/nginx/sbin/nginx
  2. 停止
    /usr/local/nginx/sbin/nginx -s stop
  3. 重启
    /usr/local/nginx/sbin/nginx -s reopen
  4. 重新加载配置文件
    /usr/local/nginx/sbin/nginx -s reload
  • Keepalived安装
  1. 进入目录 
     
    cd /usr/local

     

  2. 下载 keep-1.2.24.tar.gz、或手动上传 keep-1.2.18.tar.gz到/usr/local目录下
     
    wget http://www.keepalived.org/software/keepalived-1.2.24.tar.gz

     

  3. 解压 
     
    cd /usr/local
    tar -zxvf keepalived-1.2.18.tar.gz

     

  4. 下载 相关软件包
     
    yum install -y openssl openssl-devel

     

  5. 安装 
     
    cd keepalived-1.2.18
    
    ./configure --prefix=/usr/local/keepalived   // 指定编译的目录
    
    make && make install

     

  6. 配置nginx为开机启动,创建keepalived目录
    mkdir /etc/keepalived

     

  7. 复制文件 
     
    ln -s /usr/local/keepalived/keepalived/sbin/keepalived /usr/bin/keepalived   // 将keepalived命令软连接到/usr/bin下
    
    cp /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/keepalived
    
    chmod 755 /etc/init.d/keepalived //添加执行权限
    
    cp /usr/local/keepalived-1.2.18/keepalived/etc/keepalived/keepalived.conf /etc/keepalived/
    
    cp /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
    
    ln -s /usr/local/sbin/keepalived /usr/sbin/
    
    ln -s /usr/local/keepalived/sbin/keepalived /sbin/

     

  8. 设置开机启动 

    chkconfig keepalived on     //  可以设置开机启动   安装完毕!
    chkconfig --list keepalived   // 查看是否开机启动

     

  9.  完成

  • Keepalived的常用命令

  1. 启动
    service keepalived start
  2. 停止
    service keepalived stop
  3. 查看  
     service keepalived status
  • lvs+Keepalived实现nginx的高可用  
     
     

    LVS是Linux Virtual Server的缩写,意思是Linux虚拟服务器。 LVS可以实现负载均衡,将客户端请求转发到具体服务器。
     
    keepalived:  主要进行健康检查,实现 LVS 的高可用性。
         keepalived如果发现某台服务器不可用时,就会将其从LVS中剔除,使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉。 
     
    介绍文档:   https://www.jianshu.com/p/d053d83a4616
  1. 环境准备 
     a. 准备2台服务器,192.168.5.128(主)、192.168.5.136(备)
     b. 在2台服务器上部署nginx  + keepalived, 
     c. nginx地址http://192.168.5.128/http://192.168.5.136/(可修改nginx的c. index.html内容区分)
     
    d. 提前好准备2个配置文件keepalived.conf、nginx_check.sh
    keepalived.conf 内容如下,keepalived的核心配置, 内容如下:
    ! Configuration File for keepalived
    
    vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
        interval 2 #检测时间间隔
        weight -20 #如果条件成立的话,则权重 -20
    }
    # 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
    vrrp_instance VI_1 {
        state MASTER #来决定主从
        interface eno16777736 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
        virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样
        mcast_src_ip 192.168.110.141 #填写本机ip
        priority 100 # 节点优先级,主要比从节点优先级高
        nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
        advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        # 将 track_script 块加入 instance 配置块
        track_script {
            chk_nginx #执行 Nginx 监控的服务
        }
    
        virtual_ipaddress {
            192.168.110.110 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
        }
    }

    nginx_check.sh, 配置nginx宕机的重启命令,内容如下:
    #!/bin/bash
    A=`ps -C nginx –no-header |wc -l`
    if [ $A -eq 0 ];then
        /usr/local/nginx/sbin/nginx
        sleep 2
        if [ `ps -C nginx --no-header |wc -l` -eq 0 ];then
            killall keepalived
        fi
    fi
    
  2. 分别将keepalived.conf 、nginx_check.sh上传到128、136服务器的/etc/keepalived目录下 。                                               // keepalived.conf文件我是直接覆盖掉了原本的keepalived.conf配置
  3. 分别给128、136得执行脚本添加执行权限
    cd /etc/keepalived
    chmod u+x nginx_check.sh
  4. 分别查看128、136网络信息
     
    [root@localhost keepalived]# ip a
    1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
        link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
        inet 127.0.0.1/8 scope host lo
        inet6 ::1/128 scope host 
           valid_lft forever preferred_lft forever
    2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
        link/ether 00:0c:29:4d:b7:a0 brd ff:ff:ff:ff:ff:ff
        inet 192.168.5.128/24 brd 192.168.5.255 scope global eth0
        inet6 fe80::20c:29ff:fe4d:b7a0/64 scope link 
           valid_lft forever preferred_lft forever
    [root@localhost keepalived]# 
    
    使用ip a查看网络,得结果为
     
    128为eth0
    136为eth1

     
  5. 修改128服务器/etc/keepalived/keepalived.conf文件配置,内容如下: 
     
     
    ! Configuration File for keepalived
    
    vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
        interval 2 #检测时间间隔
        weight -20 #如果条件成立的话,则权重 -20
    }
    # 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
    vrrp_instance VI_1 {
        state MASTER #来决定主从
        interface eth0 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
        virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样
        mcast_src_ip 192.168.5.128 #填写本机ip
        priority 100 # 节点优先级,主要比从节点优先级高
        nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
        advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        # 将 track_script 块加入 instance 配置块
        track_script {
            chk_nginx #执行 Nginx 监控的服务
        }
    
        virtual_ipaddress {
            192.168.5.120 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
        }
    }
    
  6. 修改136服务器/etc/keepalived/keepalived.conf文件配置,内容如下: 
     
     
    ! Configuration File for keepalived
    
    vrrp_script chk_nginx {
        script "/etc/keepalived/nginx_check.sh" #运行脚本,脚本内容下面有,就是起到一个nginx宕机以后,自动开启服务
        interval 2 #检测时间间隔
        weight -20 #如果条件成立的话,则权重 -20
    }
    # 定义虚拟路由,VI_1 为虚拟路由的标示符,自己定义名称
    vrrp_instance VI_1 {
        state BACKUP #来决定主从
        interface eth1 # 绑定虚拟 IP 的网络接口,根据自己的机器填写
        virtual_router_id 121 # 虚拟路由的 ID 号, 两个节点设置必须一样
        mcast_src_ip 192.168.5.136 #填写本机ip
        priority 100 # 节点优先级,主要比从节点优先级高
        nopreempt # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题
        advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认 1s
        authentication {
            auth_type PASS
            auth_pass 1111
        }
        # 将 track_script 块加入 instance 配置块
        track_script {
            chk_nginx #执行 Nginx 监控的服务
        }
    
        virtual_ipaddress {
            192.168.5.120 # 虚拟ip,也就是解决写死程序的ip怎么能切换的ip,也可扩展,用途广泛。可配置多个。
        }
    }
    

     
  7. 启动128服务并查看虚拟ip
     
    service keepalived start
    ip a
    结果
     
     
  8. 启动136服务并查看虚拟ip
     
    service keepalived start
    ip a
    此时,120虚拟IP在主服务上,136实在主服务停止后,才可以查看到
     
     
  9. 测试1, 分别访问
     http://192.168.5.128/
     http://192.168.5.136/
     http://192.168.5.120/   // 此时访问得是128主服务器nginx.
  10. 测试2,停止128得keepalived 服务
     
    service keepalived stop
    访问:
     http://192.168.5.128/
     http://192.168.5.136/
     http://192.168.5.120/   // 此时访问得是136备机服务器nginx.
     
  11. 测试nginx得重启脚本 , 将服务重新启动,停止128服务器得nginx,  访问:
     http://192.168.5.128/
     http://192.168.5.136/
     http://192.168.5.120/   // 此时访问得应该还是128主机机服务器nginx
     如测试失败,则:
     /etc/keepalived/nginx_check.sh      // 查看: 手动运行脚本是否可执行
     cat nginx_check.sh                  // 查看: nginx重启脚本得内容
     /usr/local/nginx/sbin/nginx         // 查看: 手动启动nginx是否成功
  12. 完成
     
     
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值