keepalived+nginx实现高可用负载均衡

一.场景需求

1.通用场景如下:


如图场景是通常使用nginx代理负载均衡来实现web服务的负载均衡的,但是单个nginx会存在单点的隐患,如果nginx挂掉,那么后端的服务都将无法被访问,这样就导致用户体验度极差。所以实现反向代理负载均衡的nginx服务的高可用是必不可少的。

2.实现高可用的场景如下:

实现高可用的方案如下:

1.阿里云的slb
注意:阿里云目前已经不再提供vip,目前使用阿里云的云服务器实现高可用,只能通过云解析DNS对访问进行调度,或通过全球负载均衡解决方案实现跨地域容灾备份来实现slb的单点问题。
最佳实践:
您可以在一个地域内的多个可用区或多个地域内部署负载均衡实例和后端ECS实例,然后使用云解析DNS对访问进行调度。



2.硬件负载均衡器(如:F5、Radware)
3.软件方式实现高可用或负载均衡 例如:keepalived、LVS...

二.keepalived简介

1.keepalived介绍

keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点状态,后来又加入了可以实现高可用的VRRP功能.此,keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx,Haproxy,MySQL等)的高可用解决方案软件.

keepalived软件主要是通过VRRP协议实现高可用功能的.VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题的,他能够保证当个别节点宕机时,整个网络可以不间断地运行.Keepalived一方面具有配置管理LVS的功能,同时还具有对LVS下面节点进行健康检查的功能,另一方面也可实现系统网络服务的高可用功能
介绍来源链接:https://www.jianshu.com/p/ab6735606178

2.keepalived的工作原理

Keepalived 是一种高性能的服务器高可用或热备解决方案,Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用。
Keepalived 以 VRRP 协议为实现基础,用 VRRP 协议来实现高可用性(HA)。VRRP(Virtual RouterRedundancy Protocol)协议是用于实现路由器冗余的协议,
VRRP 协议将两台或多台路由器设备虚拟成一个 设备,对外提供虚拟路由器 IP(一个或多个),而在路由器组内部,如果实际拥有这个对外 IP 的路由器如果工作正常的话就是 MASTER,
或者是通过算法选举产生,MASTER 实现针对虚拟路由器 IP 的各种网络功能, 如 ARP 请求,ICMP,以及数据的转发等;其他设备不拥有该虚拟 IP,状态是 BACKUP,
除了接收 MASTER 的 VRRP 状态通告信息外,不执行对外的网络功能。当主机失效时,BACKUP 将接管原先 MASTER 的网络功能。
VRRP 协议使用多播数据来传输 VRRP 数据,VRRP 数据使用特殊的虚拟源 MAC 地址发送数据而不是自身 网卡的 MAC 地址,VRRP 运行时只有 MASTER 路由器定时发送 VRRP 通告信息,
表示 MASTER 工作正常以及虚 拟路由器 IP(组),BACKUP 只接收 VRRP 数据,不发送数据,如果一定时间内没有接收到 MASTER 的通告信 息,各 BACKUP 将宣告自己成为 MASTER,
发送通告信息,重新进行 MASTER 选举状态。
总结来源链接:https://www.jianshu.com/p/da26df4f7d60

3.VRRP协议简介

VRRP,全称Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议
VRRP的出现就是为了解决静态路由的单点故障问题
VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器的.

VRRP通过竞选机制来实现虚拟路由器的功能,所有的协议报文都是通过IP多播(Multicast)包(默认的多播地址224.0.0.18)形式发送的
虚拟路由器由VRID(范围0-255)和一组IP地址组成,对外表现为一个周知的MAC地址,:00-00-5E-00-01-{VRID}.
所以,在一个虚拟路由器中,不管谁是Master,对外都是相同的MAC和IP(称之为VIP).
客户端主机并不需要因Master的改变修改自己的路由配置.对它们来说,这种切换是透明的.

在一组虚拟路由器中,只有作为Master的VRRP路由器会一直发送VRRP广播包,此时Backup不会抢占Master
当Master不可用时,Backup就收不到来自Master的广播包了,此时多台Backup中优先级最高的路由器会抢占为Master.
这种抢占是非常快速的(可能只有1秒甚至更少),以保证服务的连续性,处于安全性考虑,VRRP数据包使用了加密协议进行了加密.
协议简介来源链接:https://www.jianshu.com/p/ab6735606178

三.场景规划及ip地址分配

四.服务安装

1.安装nginx

注意:两台负载服务器都需要安装

1)nginx官方源安装nginx

[root@lb01 ~]# cd /etc/yum.repos.d/
[root@lb01 /etc/yum.repos.d]# vim nginx.repo
这里使用vim nginx.repo创建nginx.repo源文件,按i输入如下内容:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
按ECS输入:wq保存文件并退出
[root@lb01 ~]# yum -y install nginx

2)配置nginx代理负载均衡

[root@lb01 /etc/yum.repos.d]# cd
[root@lb01 ~]# cd /etc/nginx/conf.d/
[root@lb01 /etc/nginx/conf.d]# vim ssl.conf
这里配置了证书,使用vim ssl.conf创建ssl.conf文件,按i输入如下内容:
upstream ssl_pools {
  server 172.16.1.7:80;
  server 172.16.1.8:80;
  server 172.16.1.9:80;
 }
upstream jpress_pools {
  server 172.16.1.7:8080;
  server 172.16.1.8:8080;
  server 172.16.1.9:8080;
 }
server {
    listen 80;
    server_name blog.wordpress.com;
    rewrite ^(.*) https://$server_name$1 redirect;
}
server {
    listen 443 ssl;
    server_name blog.wordpress.com;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
    location / {
    proxy_pass http://ssl_pools;
    include proxy_params;
   }
}
server {
    listen 80;
    server_name zh.wecent.com;
    rewrite ^(.*) https://$server_name$1 redirect;
}

server {
    listen 443 ssl;
    server_name zh.wecent.com;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
    location / {
    proxy_pass http://ssl_pools;
    include proxy_params;
   }
}

server {
    listen 80;
    server_name jpress.java.com;
    rewrite ^(.*) https://$server_name$1 redirect;
}

server {
    listen 443 ssl;
    server_name jpress.java.com;
    ssl_certificate ssl_key/server.crt;
    ssl_certificate_key ssl_key/server.key;
    location / {
    proxy_pass http://jpress_pools;
    include proxy_params;
   }
}
按ESC输入:wq保存文件并退出

3)Nginx反向代理配置语法

1.Nginx代理配置语法

Syntax: proxy_pass URL;
Default: —
Context: location, if in location, limit_except
http://localhost:8000/uri/
http://192.168.56.11:8000/uri/
http://unix:/tmp/backend.socket:/uri/

2.添加传递给后端服务器的请求头信息

Syntax: proxy_set_header field value;
Default: proxy_set_header Host $proxy_host;
proxy_set_header Connection close;
Context: http, server, location
# 用户请求的时候 HOST 的值是 www.baidu.com, 那么代理服务会像后端传递请求的还是 www.baidu.com
proxy_set_header Host $http_host;
# 将$remote_addr 的值放进变量 X-Real-IP 中, $remote_addr 的值为客户端的 ip
proxy_set_header X-Real-IP $remote_addr;
# 客户端通过代理服务访问后端服务, 后端服务通过该变量会记录真实客户端地址
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

3.代理到后端的TCP连接数,响应,返回等超时时间

//nginx 代理与后端服务器连接超时时间(代理连接超时)
Syntax: proxy_connect_timeout time;
Default: proxy_connect_timeout 60s;
Context: http, server, location
//nginx 代理等待后端服务器的响应时间
Syntax: proxy_read_timeout time;
Default: proxy_read_timeout 60s;
Context: http, server, location
//后端服务器数据回传给 nginx 代理超时时间
Syntax: proxy_send_timeout time;
Default: proxy_send_timeout 60s;
Context: http, server, location

4.代理缓冲区

//nignx 会把后端返回的内容先放到缓冲区当中,然后再返回给客户端,边收边传, 不是全部接收完再传给客户端
Syntax: proxy_buffering on | off;
Default: proxy_buffering on;
Context: http, server, location
//设置 nginx 代理保存用户头信息的缓冲区大小
Syntax: proxy_buffer_size size;
Default: proxy_buffer_size 4k|8k;
Context: http, server, location
//proxy_buffers 缓冲区
Syntax: proxy_buffers number size;
Default: proxy_buffers 8 4k|8k;
Context: http, server, location

5.proxy代理网站常用配置
将配置写入新文件,调用时使用include引用即可

[root@lb01 ~]# cat /etc/nginx/proxy_params 
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_connect_timeout 30;
proxy_send_timeout 60;
proxy_read_timeout 60;
proxy_buffering on;
proxy_buffer_size 32k;
proxy_buffers 4 128k;
proxy_next_upstream error timeout http_500 http_502 http_503 http_504;#自动跳过异常后端服务器

6.代理配置location时调用,方便后面多个location重复使用

location / {
    proxy_pass http://127.0.0.1:8080;
    include proxy_params;
}

4)启动nginx

[root@lb01 /etc/nginx/conf.d]# cd
[root@lb01 ~]# nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
[root@lb01 ~]# systemctl start nginx

2.安装keepalived

注意:两台负载服务器都需要安装

1)yum安装keepalived

[root@lb01 ~]# yum -y insatll keepalived

2)配置keepalived配置文件

注意:keepalived是自带监控执行脚本模块的,用户可以根据需求进行定义和监控对应的服务。这里keepalived 会定时执行脚本并对脚本执行的结果进行分析,动态调整 vrrp_instance 的优先级。如果 脚本执行结果为 0,并且 weight 配置的值大于 0,则优先级相应的增加。如果脚本执行结果非 0,并且 weight 配置的值小于 0,则优先级相应的减少。其他情况,维持原本配置的优先级,即配置文件中 priority 对应的值。

1.主负载服务器配置
[root@lb01 ~]# cd /etc/keepalived/
[root@lb01 /etc/keepalived]# vim keepalived.conf
global_defs {
    router_id lb01     # 标识本节点的字符串,通常为 hostname 
}

vrrp_script check_web {
    script "/server/scripts/check_web.sh"#检测nginx状态的脚本
    interval 5 #检测的间隔时间
    weight 50 #条件成立的权重,权重50
}

global_defs {

    interval 5

vrrp_instance VI_1 {
#主机名lb01的使用如下配置
    state BACKUP  # 主节点默认一般设置为 MASTER,对应的备份节点为BACKUP默认的是抢占式的,生产环境中使用的是非抢占式。这里设置的事非抢占式的。
    nopreempt  # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题 
    priority 150 ##节点优先级,值范围 0-254,MASTER 要比 BACKUP 高
    interface eth0  # 绑定虚拟 IP 的网络接口,与本机 IP 地址所在的网络接口相同,我的是 eth0
    virtual_router_id 51  # 虚拟路由的 ID 号,两个节点设置必须一样,可选 IP 最后一段使用, 相同的 VRID 为一个组,他将决定多播的 MAC 地址,eth0值的获取可以在机器上执行ifconfig命令得到
    advert_int 1 # 组播信息发送间隔,两个节点设置必须一样,默认1s
    
#以下为公共配置
    authentication {
      auth_type PASS
      auth_pass 1111  # 真实生产,按需求对应该过来
    } 
    virtual_ipaddress {
      10.0.0.3    #虚拟ip两个节点都需要设置
   }  
#将 track_script 块加入 instance 配置块
   track_script {
      check_nginx  #执行nginx监控的脚本
   }  
} 
2.备负载均衡器配置
[root@lb02 ~]# cd /etc/keepalived/
[root@lb02 /etc/keepalived]# vim keepalived.conf
global_defs {
    router_id lb02
}

vrrp_script check_nginx {
    script "/server/scripts/check_nginx.sh"
    interval 5
    weight 50
}

vrrp_script check_brain {
    script "/server/scripts/check_brain.sh"
    interval 5
    weight 50
}

vrrp_instance VI_1 {
#如果主机名为lb02则使用如下配置
    state BACKUP
    nopreempt  # 优先级高的设置 nopreempt 解决异常恢复后再次抢占的问题 
    priority 100
    interface eth0
    virtual_router_id 51
    advert_int 1

#以下为公共配置
    authentication {
      auth_type PASS
      auth_pass 1111
    }
    virtual_ipaddress {
      10.0.0.3
   }
 #将 track_script 块加入 instance 配置块
   track_script {
      check_nginx  #执行nginx监控的脚本
      check_brain  #执行防脑裂的脚本
   }
}
#1.检测nginx存活脚本内容如下:
[root@lb01 ~]# cat /server/scripts/check_nginx.sh 
#!/bin/bash
nginxpid=$(ps -C nginx --no-header|wc -l)
#1.判断 Nginx 是否存活,如果不存活则尝试启动 Nginx
if [ $nginxpid -eq 0 ];then
    systemctl start nginx
    sleep 3
    #2.等待 3 秒后再次获取一次 Nginx 状态
    nginxpid=$(ps -C nginx --no-header|wc -l)
    #3.再次进行判断, 如 Nginx 还不存活则停止 Keepalived,让地址进行漂移,并退出脚本
    if [ $nginxpid -eq 0 ];then
        systemctl stop keepalived
    fi
fi
#2.防止脑裂的脚本:
[root@lb02 /server/scripts]# cat check_brain.sh 
#!/bin/bash

lb01_vip=10.0.1.3
lb01_nginx=$(curl -x 10.0.1.5:80 -I -s -w "%{http_code}\n" -o /dev/null  blog.wordpress.com)

#ping -c 1 -W 1 ${lb01_ip} &>/dev/null
#如果lb01的IP能ping通,但是我自己也存在VIP,我就认为发生裂脑了,我就把自己的keep干掉
if [ ${lb01_nginx} -eq 200 -a `ip add|grep "$lb01_vip"|wc -l` -eq 1 ];then
    echo "ha is bad" >> /tmp/check.txt
    systemctl stop keepalived
else
    echo "ha is ok" >> /tmp/check.txt
fi

3)启动keepalived

[root@lb01 /etc/keepalived]# systemctl start keepalived
[root@lb02 /etc/keepalived]# systemctl start keepalived

5.高可用测试

1.测试vip的漂移

1)正常情况如下:
[root@lb01 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    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 group default qlen 1000
    link/ether 00:0c:29:5c:d9:68 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.3/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe5c:d968/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5c:d9:72 brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.5/24 brd 172.16.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe5c:d972/64 scope link 
       valid_lft forever preferred_lft forever
[root@lb02 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    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 group default qlen 1000
    link/ether 00:0c:29:e0:49:94 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.6/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fee0:4994/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:e0:49:9e brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.6/24 brd 172.16.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fee0:499e/64 scope link 
       valid_lft forever preferred_lft forever
2)关闭lb01的keepalived查看ip的漂移
[root@lb01 ~]# systemctl stop keepalived.service
[root@lb01 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    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 group default qlen 1000
    link/ether 00:0c:29:5c:d9:68 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe5c:d968/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5c:d9:72 brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.5/24 brd 172.16.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe5c:d972/64 scope link 
       valid_lft forever preferred_lft forever
[root@lb02 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    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 group default qlen 1000
    link/ether 00:0c:29:e0:49:94 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.6/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.3/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fee0:4994/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:e0:49:9e brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.6/24 brd 172.16.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fee0:499e/64 scope link 
       valid_lft forever preferred_lft forever

2.实际场景测试

1)正常的vip是在lb01,访问的结果如下:

验证vip所在位置:

[root@lb01 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    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 group default qlen 1000
    link/ether 00:0c:29:5c:d9:68 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.3/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe5c:d968/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5c:d9:72 brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.5/24 brd 172.16.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe5c:d972/64 scope link 
       valid_lft forever preferred_lft forever

2)修改文件导致nginx挂掉

说明:这里修改lb01节点的nginx的配置文件设置语法错误,之后重启nginx导致nginx故障,之后测试vip漂移,以及真实站点的访问。
nginx故障如下:

[root@lb01 ~]# systemctl restart nginx
Job for nginx.service failed because the control process exited with error code. See "systemctl status nginx.service" and "journalctl -xe" for details.

查看vip的漂移情况:

[root@lb01 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    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 group default qlen 1000
    link/ether 00:0c:29:5c:d9:68 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.5/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe5c:d968/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:5c:d9:72 brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.5/24 brd 172.16.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe5c:d972/64 scope link 
       valid_lft forever preferred_lft forever
[root@lb02 ~]# ip add
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    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 group default qlen 1000
    link/ether 00:0c:29:e0:49:94 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.6/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.0.0.3/32 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fee0:4994/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:e0:49:9e brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.6/24 brd 172.16.1.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fee0:499e/64 scope link 
       valid_lft forever preferred_lft forever

刷新访问测试结果:


jpress部署请参照链接文档:
https://www.jianshu.com/p/d9bf3283b7c8
wordpress部署请参考:
https://www.jianshu.com/p/75589a125252

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,015评论 4 362
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,262评论 1 292
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,727评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,986评论 0 205
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,363评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,610评论 1 219
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,871评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,582评论 0 198
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,297评论 1 242
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,551评论 2 246
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,053评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,385评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,035评论 3 236
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,079评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,841评论 0 195
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,648评论 2 274
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,550评论 2 270

推荐阅读更多精彩内容