nginx-1- 安装(linux)

51下载地址

nginx: 下载

2 安装

2.1 安装依赖

yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install gcc-c++
yum install -y openssl openssl-devel

 2.2 解压

tar -zxvf nginx-1.22.0.tar.gz
cd nginx-1.22.0

2.3 使用nginx的默认配置

./configure

2.4 编译安装

make && make install

2.5 默认安装目录及启动命令

默认安装目录
/usr/local/nginx

脚本目录
/usr/local/nginx/sbin

启动nginx 默认就会带 /usr/local/nginx/conf/nginx.conf
./nginx

查看版本
./nginx -v

停止ngin
./nginx -s stop

不需要重启也可以加载nginx.conf
./nginx -s reload

配置文件路径
./nginx -t

指定配置文件
#启动
/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx_my.conf
#重启
/usr/local/nginx/sbin/nginx -s reload -c /usr/local/nginx/conf/nginx_my.conf
#停止
/usr/local/nginx/sbin/nginx -s stop -c /usr/local/nginx/conf/nginx_my.conf


 这俩进程

 2.6 测试  直接输入ip即可 防火墙加80端口

3 Nginx搭载sticky模块保持回话

Sticky是nginx的一个模块,它是基于cookie的一种nginx的负载均衡解决方案,通过分发和识别cookie,来使同一个客户端的请求落在同一台服务器上,默认标识名为route

  1. .客户端首次发起访问请求,nginx接收后,发现请求头没有cookie,则以轮询方式将请求分发给后端服务器。
  2. .后端服务器处理完请求,将响应数据返回给nginx。
  3. .此时nginx生成带route的cookie,返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值
  4. .客户端接收请求,并保存带route的cookie。
  5. .当客户端下一次发送请求时,会带上route,nginx根据接收到的cookie中的route值,转发给对应的后端服务器。

3.1 下载

https://bitbucket.org/nginx-goodies/nginx-sticky-module-ng/get/c78b7dd79d0d099e359c5c4394d13c9317b9348f.tar.gz

3.2 重新编译nginx

 重新编译后,会出现全新的nginx, 及时保存好你以前的 nginx.conf

我上传的目录是  /usr/local/data

以前安装nginx的目录是 /usr/local/nginx

nginx解压目录是  /usr/local/data/nginx-1.22.0

 解压 sticky

tar -zxvf nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d.tar.gz

 将原来配置文件复制出去,要不会覆盖

cp /usr/local/nginx/conf/nginx.conf /usr/local/data/

修改:找到sticky刚刚的解压目录,进入修改文件 vim ngx_http_sticky_misc.h ,加入下面的头文件

#include <openssl/sha.h> 
#include <openssl/md5.h>

openssl检查是否安装

  yum install -y openssl-devel

 找到nginx解压目录进入,找到 configure 执行重新编译命令

  讲解:将sticky模块 安装到 /usr/local/nginx

./configure --prefix=/usr/local/nginx/ --add-module=/usr/local/data/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d

 重新编译,make install 会覆盖掉以前安装过得模块

make 

 编译后的东西都在这个目录下

cd objs/

 覆盖掉启动脚本

cp nginx /usr/local/nginx/sbin/

负载到后端接口 http模块里面

 http {  
upstream myserver {
        sticky;
        server 192.168.135.128:8080;
        server 192.168.135.4:8080;
      }

  }

4 合并客户端请求(concat模块)

 例如:加载一个html可能要加载很多js,假如需要三个js,就会多3个请求js的请求。为了提高效率,可以合并为一个请求,同时获取这三个js.  淘宝就是这样的。因为是淘宝开发的。

4.1 安装nginx concat

下载 上传到/usr/local/data/

https://github.com/alibaba/nginx-http-concat/archive/refs/heads/master.zip

解压

unzip nginx-http-concat-master.zip

原解压目录 /usr/local/data/nginx-1.22.0 

原nginx默认安装目录是/usr/local/nginx/

cd /usr/local/data/nginx-1.22.0  
./configure --prefix=/usr/local/nginx/ --add-module=/usr/local/data/nginx-http-concat-master

重新编译,make install 会覆盖掉以前安装过得模块

make 

 编译后的东西都在这个目录下

cd objs/

 覆盖掉启动脚本

cp nginx /usr/local/nginx/sbin/

4.2应用

https://github.com/alibaba/nginx-http-concat/archive/refs/heads/master.zip

location /static/css/ {
    concat on; #开启
    concat_max_files 20; #最多20个
}
    
location /static/js/ {
    concat on;
    concat_max_files 30;#最多30个
}

5 安装mysql连接

  

5.1 重新编译nginx

 重新编译后,会出现全新的nginx, 及时保存好你以前的 nginx.conf

我上传的目录是  /usr/local/data

以前安装nginx的目录是 /usr/local/nginx

nginx解压目录是  /usr/local/data/nginx-1.22.0

 找到nginx解压目录进入,找到 configure 执行重新编译命令

  讲解:将sticky模块 安装到 /usr/local/nginx

./configure --prefix=/usr/local/nginx/ --with-stream

 重新编译,make install 会覆盖掉以前安装过得模块

make 

 编译后的东西都在这个目录下

cd objs/

 覆盖掉启动脚本

cp nginx /usr/local/nginx/sbin/

配置文件修改 stream和 http是平级模块 ,要写在http模块外面

# stream属于最顶层的配置
stream {
    upstream mysqlserver {
        server 192.168.35.120:3306;
    }
    server {
        listen 3306;
        #proxy_connect_timeout 10s;
        #代理时间默认10分钟,在这个时间范围内,没有数据传递,就会关闭连接,如果这个时间设置短,就会在该主机上产生大量的FIN_WAIT2和TIME_WAIT状态的tcp连接,连接的复用率会变低
        #proxy_timeout 10m; 
        # 这里的proxy是stream-proxy模块,不是http-proxy
        proxy_pass mysqlserver;
    }
}

http {
      }

6 keepalived

6.1 单机

单机模式下也可以考虑安装keepalived  他可以检测nginx是否启动,执行脚本让nginx自动启动。短暂的访问失效

6.2 主从

1:准备两台服务器 ,192.168.135.4,192.168.135.128

2:在这两台服务器上都需要安装nginx,和keppalived

3:主机和从机的keppalived,只有 priority ,state

4:先启动nginx 在启动keppalived。

5:对外访问的ip:  192.168.135.9

yum安装方式:默认安装位置 etc/keepalived/keepalived.conf

yum install keepalived -y

keepalived.conf

主从配置 修改属性位置:priority,state

注意:每个模块名和 { 要有一个空格,

日志文件默认位置是系统日志:/var/log/messages  查看脚本不启动等等都需要看日志

! Configuration File for keepalived
#全局定义
global_defs { 
   # email通知,用于服务有故障时发送邮件报警 可选项,不建议用。需系统开启sendmail服务,建议用第三方独立监控服务。
   notification_email {
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   #指定发件人,可选配置。
   notification_email_from Alexandre.Cassen@firewall.loc
   # 指定发送邮件的smtp服务器地址,可选配置。
   smtp_server 192.168.200.1
   smtp_connect_timeout 30   # 连接smtp的超时时间
   router_id LVS_DEVEL   #用户标识本节点的名称
}
#声明检查脚本
vrrp_script chk_nginx { 
    
 script "/etc/keepalived/nginx_check.sh"
 interval 2 #检测脚本执行的间隔 监控脚本的执行时间要大于advert_int(3秒不行就5秒
 weight 2
}
 
 
 
# 定义一个vrrp_install实例,名称为VI_1
vrrp_instance VI_1 {
    state MASTER  # 实例的角色状态,主机 AMSTER 从机 BACKUP
    interface ens33 # 对外提供服务的网络接口,如eth0,eth1.
    virtual_router_id 51 #虚拟路由ID标识,主备服务器配置中相同实例的ID必须一致,否则将出现脑裂问题。
    priority 100      # priority表示实例优先级,数字越大,优先级越高 主机高于从机
    advert_int 1   # advert_int为同步通知间隔。主备之间通信检查的时间间隔,默认为1秒。    
    # 权限认证配置。
    authentication { #设置验证类型和密码,MASTER和BACKUP必须使用相同的密码才能正常通信
        auth_type PASS
        auth_pass 1111
    }
    
    # 虚拟IP地址;可以配置多个IP,每个IP占一行。注意,这里的IP就是在工作中需要和域名绑定的ip,
    # 即可配置的高可用服务监听的ip保持一致。
    virtual_ipaddress {
        192.168.135.9 # 对外访问的ip
    }
 
   # 启动脚本 必须和上面的声明 名称一致
    track_script {
        chk_nginx #执行 Nginx 监控的服务
    }
}

nginx_check.sh

1:脚本加权限: chmod u+x nginx_check.sh

                            chmod 744 nginx_check.sh

2:先执行一下脚本,看是否是可执行脚本。

3:脚本详解,先查看nginx是否启动,没有启动会执行启动命令,过了2秒还没有启动成功,会关闭 keepalived 服务,因为不关闭它,无法从主服务器切换到从服务器

4 解决脚本不执行 参考  keepalived配置检测脚本问题 - 知乎

#!/bin/bash
# echo 1 >> myid
A=`ps -C nginx --no-header |wc -l`
# 如果等于0 就 nginx没有启动
if [ $A -eq "0" ];then
cd /usr/local/nginx/sbin/
./nginx
sleep 2
# 如果等于0 就 nginx没有启动  keepalived也必须关闭,否则依然访问不到从nginx
if [ `ps -C nginx --no-header |wc -l` -eq 0 ]; then
 #  killall keepalived
   systemctl stop keepalived.service
    fi
    fi

启动前必须执行的命令

1:脚本必须执行: chmod u+x nginx_check.sh

                               chmod 744 nginx_check.sh

2:暂时版:setenforce 0  

     永久版:  sed -i "s/^SELINUX=.*/SELINUX=disabled/g" /etc/selinux/config

启动服务

启动nginx 和 keepalived

./nginx

启动 keepalived   

systemctl start keepalived.service

停止 keepalived  

systemctl stop keepalived.service

重启

systemctl restart keepalived.service

验证

直接访问 http://192.168.135.9/
关闭主服务器上的 nginx 不关闭 keepalived 。依然不能访问到从nginx. 报错。所以脚本上必须也要关闭keepalived
关闭主服务器上的nginx,和 keepalived  。可以访问到从服务器的nginx

Keepalived+LVS+nginx搭建nginx高可用集群

  • 12
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值