前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx+keepalived+3个站

nginx+keepalived+3个站

作者头像
py3study
发布2020-01-07 14:50:01
4260
发布2020-01-07 14:50:01
举报
文章被收录于专栏:python3

一 部署环境:

master:192.168.127.129

slave:192.168.127.130

vip: 192.168.127.100  (在实际环境中需要公网ip)

两台服务器上面分别有三个站点,web,h5,app

nginx和keepalived 安装过程省略

二 master配置文件设置

1 master  负载均衡配置

代码语言:javascript
复制
[root@master vhosts]# vi ld.conf
 upstream www{
     server 192.168.127.129:81;
     server 192.168.127.130:81 ;
     ip_hash;
}
server {
     listen 81;
     server_name  www.ihnhlife.com;
     location / {
       proxy_pass http://www/;
       proxy_set_header Host $host;
  }
}
## S.ihnhlife.com  APP端
upstream s{
     server 192.168.127.129:83 ;
     server 192.168.127.130:83 ;
     ip_hash;
}
server {
     listen 83;
     server_name  s.ihnhlife.com;
     location / {
       proxy_pass http://s/;
       proxy_set_header Host $host;
  }
}
upstream h5{
     server 192.168.127.129:82;
     server 192.168.127.130:82;
     ip_hash;
}
server {
     listen 82;
     server_name  m.ihnhlife.com;
     location / {
       proxy_pass http://h5/;
       proxy_set_header Host $host;
  }
}

2 master 3个站点的配置文件:

代码语言:javascript
复制
[root@master vhosts]# cat m.ihnhlife.com.conf
server
{
    listen 192.168.127.129:82;
    server_name localhost;
    index index.html index.htm;
    root /data/wwwroot/m.ihnhlife.com/;
}
[root@master vhosts]# cat s.ihnhlife.com.conf
server
{
    listen 192.168.127.129:83;
    server_name localhost;
    index index.html index.htm;
    root /data/wwwroot/www.ihnhlife.com/;
 location / {
            proxy_pass http://192.168.127.129:8080;
            proxy_set_header Host  $host;
            proxy_set_header X-Forwarded-For  $proxy_add_x_forwarded_for;
            proxy_set_header X-Real-IP  $remote_addr;
}
}
[root@master vhosts]# cat www.ihnhlife.com.conf
server
{
    listen 192.168.127.129:81;
    server_name localhost;
    index index.html index.htm;
    root /data/wwwroot/www.ihnhlife.com/;
}

3 master三个站点根目录配置 (/data/wwwroot)

代码语言:javascript
复制
[root@master wwwroot]# ls
m.ihnhlife.com  s.ihnhlife.com  www.ihnhlife.com
[root@master m.ihnhlife.com]# cat index.html
 129m.inhnlife.com
[root@master s.ihnhlife.com]# cat index.html
129 s.inhnlife.com
[root@master www.ihnhlife.com]# cat index.html
 129 www.ihnhlife.com

4 master keepalived配置

代码语言:javascript
复制
global_defs {
   notification_email {
     root@localhost
   }
   notification_email_from admin@localhost
   smtp_server 127.0.0.1
   smtp_connect_timeout 30
   router_id LTT
}
vrrp_script chk_nginx {  #检测nginx服务是否在运行有很多方式,比如进程,用脚本检测等等
   script "killall -0 nginx"  #用shell命令检查nginx服务是否存在
   interval 1  #时间间隔为1秒检测一次
   weight -2   #当nginx的服务不存在了,就把当前的权重-2
   fall 2      #测试失败的次数
   rise 1      #测试成功的次数
}
vrrp_instance IN_1 {
    state MASTER
    interface eth0
    virtual_router_id 22
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass aaaa
    }
    virtual_ipaddress {
        192.168.127.100
    }
   track_script {
    chk_nginx   #引用上面的vrrp_script定义的脚本名称
}
}

5 master nginx的主配置文件:

代码语言:javascript
复制
user nobody nobody;
worker_processes 2;
error_log /usr/local/nginx/logs/nginx_error.log crit;
pid /usr/local/nginx/logs/nginx.pid;
worker_rlimit_nofile 51200;      #并发数设置
events
{
    use epoll;
    worker_connections 6000;   #单个后台worker process进程的最大并发链接数
}
http
{
    include mime.types;
    default_type application/octet-stream;
    server_names_hash_bucket_size 3526;
    server_names_hash_max_size 4096;
    log_format combined_realip '$remote_addr$http_x_forwarded_for[$time_local]'   (log_format是日志的名字可以自定义)
    '$host "$request_uri" $status'
    '"$http_referer" "$http_user_agent"';
    sendfile on;
    tcp_nopush on;
    keepalive_timeout 30;
    client_header_timeout 3m;
    client_body_timeout 3m;
    send_timeout 3m;
    connection_pool_size 256;
    client_header_buffer_size 1k;
    large_client_header_buffers 8 4k;
    request_pool_size 4k;
    output_buffers 4 32k;
    postpone_output 1460;
    client_max_body_size 10m;
    client_body_buffer_size 256k;
    client_body_temp_path /usr/local/nginx/client_body_temp;
    proxy_temp_path /usr/local/nginx/proxy_temp;
    fastcgi_temp_path /usr/local/nginx/fastcgi_temp;
    fastcgi_intercept_errors on;
    tcp_nodelay on;
    gzip on;
    gzip_min_length 1k;
    gzip_buffers 4 8k;
    gzip_comp_level 5;
    gzip_http_version 1.1;
    gzip_types text/plain application/x-javascript text/css text/htm application/xml;
    include vhosts/*.conf;

三 slave 配置文件:

slave除了keepalvied的配置不同之外,其余的都是一样的,复制一份即可(3个站点的内容改一下,为了方便识别)

keepalived的配置:

代码语言:javascript
复制
vim keepalived.conf   #此配置文件是从Master服务器上copy过来,只需小小改动
state BACKUP  #把这里原先的MASTER改成BACKUP
priority 99   #把这里原先的100改成99

四 启动服务并测试

最后在两台主机分别启动nginx和keepalived 服务

1 停掉主上面的nginx服务,看是否可以正常访问3个站点

2 停掉主上面的keepalvied服务,看是否可以正常访问3个站点

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/09/19 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云服务器
云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档