使用华为云VPC搭建Keepalived+Nginx高可用WEB负载均衡

举报
云技术搬运工 发表于 2020/10/14 10:57:17 2020/10/14
【摘要】 本文档介绍如何使用华为云VPC在CentOS6.8系统环境实现 Keepalived+Nginx高可用WEB负载均衡环境搭建。

问题描述:

本文档介绍如何使用华为云VPC在CentOS6.8系统环境实现 Keepalived+Nginx高可用WEB负载均衡环境搭建。


 1物料准备

image.png

本文档中的操作为实验环境,所有资源均为“按需付费”,如果您自己在生产环境中使用,建议使用包年/包月模式。为确保各资源组件可连通性,一定确保所有资源均在“华东-上海二”购买,实际生产环境按业务实际需要选择区域。


1.1购买虚拟私有云(VPC)并指定子网

(1)虚拟私有云vpc-HA和子网subnet-HA

登录华为云官网,按照网站导航——产品à网络à 虚拟私有云 VPC找到虚拟私有云(VPC)产品。

点击“立即使用”购买虚拟私有云 VPC进入“申请虚拟私有云”页面。

1.png

2.png

(2)购买完成的虚拟私有云(vpc-HA)和子网(subnet-HA)信息如下图所示

3.png

1.2 、 购买弹性云服务器(ECS)

登录华为云官网,按照网站导航——产品à计算à弹性云服务器 ECS找到弹性云服务器 (ECS)产品。

点击“立即购买”进入“购买弹性云服务器”页面

4.png

进入购买页面后,购买过程中注意指定“物料准备”中指定的如下相关信息:


(1)ecs-HA1:

5.png

6.png


(2)、 ecs-HA2:

7.png

 8.png


(3)、 购买完成的两台弹性云服务器配置信息

我们这里是实验环境,所有一切从简,并未选购数据盘,实际生产环境使用时请按业务需求选购数据盘,并切实考虑HA两个节点之间业务数据一致性(同步)问题。

9.png


1.3购买弹性公网IP(EIP)

登录华为云官网,按照网站导航——产品à网络à 弹性公网IP(Elastic IP),找到弹性公网IP(Elastic IP)购买页。

10.png

11.png

我们本次购买到的弹性公网IP为XXXXXXXXXXX


1.4申请虚拟IP地址

登录华为云官网,按照网站导航——控制台→服务列表→网络→虚拟私有云→vpc-HA→子网→subnet-HA→虚拟IP→申请虚拟IP地址。

12.png

13.png


2 、 操作步骤

2.1、 配置弹性云服务器环境

配置弹性云服务器环境需要使用互联网安装相关软件包,所以我们在配置弹性云服务器环境的过程中会临时使用弹性公网IPXXXXXXXXXX。

(1)ecs-HA1:

A.  绑定弹性公网IP XXXXXXXXXXXX到ecs-HA1。

      登录华为云官网,按照网站导航——控制台à服务列表à计算à弹性云服务器,找到ecs-HA1。

14.png

15.png

16.png


B.  通过ssh连接ecs-HA1安装nginx、keepalived 软件包及相关依赖包。

 

# yum install nginx   keepalived -y

 

C.  编辑nginx配置文件。

 

# vim   /etc/nginx/nginx.conf

 

user root;

worker_processes 1;

#error_log   logs/error.log;

#error_log   logs/error.log notice;

#error_log   logs/error.log info;

#pid logs/nginx.pid;

events {

worker_connections   1024;

}

http {

include mime.types;

default_type   application/octet-stream;

#log_format main   '$remote_addr - $remote_user [$time_local] "$request" '

# '$status   $body_bytes_sent "$http_referer" '

#   '"$http_user_agent" "$http_x_forwarded_for"';

#access_log   logs/access.log main;

sendfile on;

#tcp_nopush on;

#keepalive_timeout 0;

keepalive_timeout 65;

#gzip on;

server {

listen 80;

server_name localhost;

#charset koi8-r;

#access_log   logs/host.access.log main;

location / {

root html;

index index.html   index.htm;

}

#error_page 404   /404.html;

# redirect server error   pages to the static page /50x.html

error_page 500 502 503   504 /50x.html;

location = /50x.html {

root html;

}

}

}

 

D.   编辑index.html文件内容以演示访问效果

 

# vim   /usr/share/nginx/html/index.html

 

<html>

<head>

<title>ECS-HA</title>

</head>

<body>

<h1>Welcome   to <strong>ECS-HA1</strong>

</body>

</html>

 

E.  设置nginx服务开机自启动并启动服务

 

# systemctl   enable nginx

# systemctl   start nginx.service


F.  Nginx单节点访问测试。

17.png


G.  编辑keepalived配置文件。

 

# vim   /etc/keepalived/keepalived.conf

 

! Configuration File for   keepalived

global_defs {

router_id master-node

}

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 eth0

mcast_src_ip   192.168.0.10

virtual_router_id 51

priority 101

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.0.100

}

track_script {

chk_http_port

}

}

 

H.  编辑nginx监控脚本。

 

# vim   /etc/keepalived/chk_nginx.sh

 

#!/bin/bash

counter=$(ps -C nginx   --no-heading|wc -l)

if [ "${counter}"   = "0" ]; then

systemctl start   nginx.service

sleep 2

counter=$(ps -C nginx   --no-heading|wc -l)

if [   "${counter}" = "0" ]; then

systemctl stop   keepalived.service

fi

fi

 

 

chmod +x   /etc/keepalived/chk_nginx.sh

 

I.  设置keepalived服务开机自启动并启动服务

 

# systemctl enable   keepalived

# systemctl start   keepalived.service

 

(2)、 ecs-HA2:

先将弹性公网IP XXXXXXXX从ecs-HA1解绑定。

 18.png


A.   绑定弹性公网IP xxxxxxxx到ecs-HA2。

登录华为云官网,按照网站导航——控制台à服务列表à计算à弹性云服务器,找到ecs-HA2。


 19.png

20.png

21.png


B.  通过ssh连接ecs-HA1安装nginx、keepalived 软件包及相关依赖包。

 

# yum install nginx keepalived   -y

 

C.   编辑nginx配置文件(也可以从ecs-HA1上复制一份)。

 

#   vim /etc/nginx/nginx.conf

 

user root;

worker_processes 1;

#error_log   logs/error.log;

#error_log   logs/error.log notice;

#error_log   logs/error.log info;

#pid logs/nginx.pid;

events {

worker_connections   1024;

}

http {

include mime.types;

default_type   application/octet-stream;

#log_format main   '$remote_addr - $remote_user [$time_local] "$request" '

# '$status   $body_bytes_sent "$http_referer" '

#   '"$http_user_agent" "$http_x_forwarded_for"';

#access_log logs/access.log   main;

sendfile on;

#tcp_nopush on;

#keepalive_timeout 0;

keepalive_timeout 65;

#gzip on;

server {

listen 80;

server_name localhost;

#charset koi8-r;

#access_log   logs/host.access.log main;

location / {

root html;

index index.html   index.htm;

}

#error_page 404   /404.html;

# redirect server error   pages to the static page /50x.html

error_page 500 502 503   504 /50x.html;

location = /50x.html {

root html;

}

}

}

 

D.   编辑index.html文件内容以演示访问效果

 

# vim   /usr/share/nginx/html/index.html

 

<html>

<head>

<title>ECS-HA</title>

</head>

<body>

<h1>Welcome   to <strong>ECS-HA2</strong>

</body>

</html>

 

 E.   设置nginx服务开机自启动并启动服务

 

# systemctl   enable nginx

# systemctl   start nginx.service

 

F.   Nginx单节点访问测试。

22.png


 G.   编辑keepalived配置文件。

 

#   vim /etc/keepalived/keepalived.conf

 

! Configuration File   for keepalived

global_defs {

router_id master-node

}

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 eth0

mcast_src_ip   192.168.0.20

virtual_router_id 51

priority 101

advert_int 1

authentication {

auth_type PASS

auth_pass 1111

}

virtual_ipaddress {

192.168.0.100

}

track_script {

chk_http_port

}

}

 

H.   编辑nginx监控脚本并添加执行权限(也可以从ecs-HA1上复制一份)

 

# vim   /etc/keepalived/chk_nginx.sh

 

#!/bin/bash

counter=$(ps -C nginx   --no-heading|wc -l)

if [   "${counter}" = "0" ]; then

systemctl start   nginx.service

sleep 2

counter=$(ps -C nginx   --no-heading|wc -l)

if [   "${counter}" = "0" ]; then

systemctl stop   keepalived.service

fi

fi

 

 

chmod +x   /etc/keepalived/chk_nginx.sh

 

 设置keepalived服务开机自启动并启动服务

 

# systemctl enable   keepalived

# systemctl start   keepalived

 

2.2 、绑定虚拟IP。

先将弹性公网IP xxxxxxxx从ecs-HA2解绑定。

23.png


登录华为云官网,按照网站导航——控制台à服务列表à网络à虚拟私有云àvpc-HAà子网àsubnet-HAà虚拟IP。

24.png

 

(1)绑定虚拟IP到弹性云服务器ecs-HA1。

25.png

 

(2)、 绑定虚拟IP到弹性云服务器ecs-HA2。

 26.png

28.png



(3)、 绑定虚拟IP到弹性公网IP xxxxxxx。

 29.png

30.png


3 、结果验证

分别重启ecs-HA1和ecs-HA2,通过华为云官网用户控制台远程登录到ecs-HA1上按以下操作进行验证。

3.1查看虚IP是否有绑定到ecs-HA1的eth0网卡上

 

# ip addr show

 

 31.png


3.2 、通过浏览器访问弹性公网IP看是否可以访问到ecs-HA1节点上的WEB测试页。

32.png


3.3手动停止主服务器(ecs-HA1)上的keepalived服务,然后查看从服务器(ecs-HA2)是否有接管VIP;通过浏览器访问弹性公网IP看是否可以访问到ecs-HA2节点上的WEB测试页。

 

# systemctl stop   keepalived.service

33.png

34.png


 通过以上验证信息可以看出我们的高可用WEB负载均衡功能正常。



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。