Table of Contents
welcome to nginx! 10.0.0.3
Home Operation and Maintenance Nginx How to implement dual-machine hot backup with Nginx+Keepalived

How to implement dual-machine hot backup with Nginx+Keepalived

May 29, 2023 pm 08:29 PM
nginx keepalived

一.keepalived

keepalived is a service software that ensures high availability of the cluster. The node with high priority in the network is the master responsible for responding to the vip's arp package and mapping the vip and mac addresses. The relationship tells other hosts in the network and will also send vrrp notifications to the network in the form of multicast to inform them of their priority. The backup node is only responsible for processing multicast packets sent by the master. When it finds that the master's priority is not as high as its own, or it does not receive the vrrp notification from the master, the backup node will switch itself to the master state.

2. Environment setup

  1. Environment: qemu-kvm, client debian(9.4.0)

  2. Virtual machine qemu-kvm installation: Introduction to virtualization technology qemu-kvm

1. Use temporary snapshots to create two virtual machines. The following operations need to be performed on both virtual machines.

faramita2016@linux-l9e6:~> qemu-kvm -cpu host -m 512 -hda vdisk.img -net nic -net bridge,br=br0 -snapshot -nographic
Copy after login

2. Set the virtual machine static ip

root@debian:~# cat /etc/network/interfaces
# the primary network interface
allow-hotplug ens3
#iface ens3 inet dhcp
iface ens3 inet static
address 10.0.0.3  // 设置ip
netmask 255.0.0.0
gateway 10.0.0.1
hwaddress ether 52:54:00:12:34:53  // 设置mac地址
Copy after login

3. Activate the network card ip

root@debian:~# ip addr del 10.0.0.8/8 dev ens3  // 删除客户机原有ip
root@debian:~# ifdown ens3
root@debian:~# ifup ens3
Copy after login

4. Install nginx and keepalived

root@debian:~# apt-get install -y nginx keepalived
Copy after login

5. Modify the /var/www/html/index.nginx-debian.html file and add the current virtual machine IP to mark the actual response server

root@debian:~# vi /var/www/html/index.nginx-debian.html 
……
<h1 id="welcome-nbsp-to-nbsp-nginx-nbsp">welcome to nginx! 10.0.0.3</h1>
……
Copy after login

How to implement dual-machine hot backup with Nginx+Keepalived

3. Software configuration

Primary node virtual machine (10.0.0.3), backup node virtual machine (10.0.0.4), virtual ip (10.0.0.100)

1. On the primary node virtual machine, edit the /etc/keepalived/keepalived.conf file

root@debian:~# cat /etc/keepalived/keepalived.conf 
global_defs {
  router_id ri_1  // 标识当前keepalived节点
}

vrrp_script chk_nginx {
  script "/root/chk_nginx.sh"  // 定义监控脚本
  interval 2  // 执行监控脚本的闹中间隔时间
}

vrrp_instance vi_1 {
  state master  // 设置节点为主节点,节点的初始状态
  interface ens3  // 设置绑定虚拟ip的网络接口
  virtual_router_id 50  // vrrp组名,指明节点同属一个组
  priority 100  // 节点优先级,主节点应当高于备用节点
  advert_int 1  // 组播信息发送间隔

  #nopreempt  // 禁止抢占服务,只对备用节点生效,主节点根据priority优先级进行抢占,不受nopreempty控制

  authentication {
    auth_type pass  // 设置认证方式
    auth_pass 123456  // 密码
  }

  virtual_ipaddress {
    10.0.0.100/24  // 设置vip
  }

  track_script {  // 调用监控脚本
    chk_nginx
  }
}
Copy after login

2. On the standby node virtual machine, edit the /etc/keepalived/keepalived.conf file, except the following items, Others are the same as the master node

state backup  // 设置节点为主节点,节点的初始状态
  priority 10  // 节点优先级
Copy after login

3. Execute on all nodes, create monitoring scripts, edit the /root/chk_nginx.sh file

root@debian:~# vi /root/chk_nginx.sh 
#!/bin/bash
a=`ps -c nginx --no-header | wc -l`
if [ $a -eq 0 ]
then
  /etc/init.d/keepalived stop
fi
Copy after login

4. Verify service

1. Master node virtual machine, start nginx and keepalived services

root@debian:~# /etc/init.d/nginx start
root@debian:~# /etc/init.d/keepalived start
Copy after login
Copy after login

How to implement dual-machine hot backup with Nginx+Keepalived

Execute the ip a command, the master node network card ens3 has been bound to vip (10.0 .0.100)

2. On the backup node virtual machine, start nginx and keepalived services

root@debian:~# /etc/init.d/nginx start
root@debian:~# /etc/init.d/keepalived start
Copy after login
Copy after login

How to implement dual-machine hot backup with Nginx+Keepalived

Execute the ip a command, the backup node network card ens3 Unbound vip (10.0.0.100)

3. The host browser accesses http://10.0.0.100

How to implement dual-machine hot backup with Nginx+Keepalived

and 10.0 appears. 0.3 web page, indicating that the keepalived service has taken effect and vip has been bound to the main node

4. In the main node virtual machine, close the nginx service and simulate downtime

root@debian:~# /etc/init.d/nginx stop
Copy after login

How to implement dual-machine hot backup with Nginx+Keepalived

Execute the ip a command, the main node network card ens3 is not bound to vip (10.0.0.100)

5. On the backup node virtual machine, query the ip

How to implement dual-machine hot backup with Nginx+Keepalived

Execute the ip a command, and the backup node network card ens3 has been bound to vip (10.0.0.100)

6. The host browser accesses http://10.0.0.100

How to implement dual-machine hot backup with Nginx+Keepalived

The 10.0.0.4 web page appears, indicating that the keepalived service has taken effect and the VIP has been bound to the backup node

The above is the detailed content of How to implement dual-machine hot backup with Nginx+Keepalived. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to check the name of the docker container How to check the name of the docker container Apr 15, 2025 pm 12:21 PM

You can query the Docker container name by following the steps: List all containers (docker ps). Filter the container list (using the grep command). Gets the container name (located in the "NAMES" column).

How to configure nginx in Windows How to configure nginx in Windows Apr 14, 2025 pm 12:57 PM

How to configure Nginx in Windows? Install Nginx and create a virtual host configuration. Modify the main configuration file and include the virtual host configuration. Start or reload Nginx. Test the configuration and view the website. Selectively enable SSL and configure SSL certificates. Selectively set the firewall to allow port 80 and 443 traffic.

How to check whether nginx is started How to check whether nginx is started Apr 14, 2025 pm 01:03 PM

How to confirm whether Nginx is started: 1. Use the command line: systemctl status nginx (Linux/Unix), netstat -ano | findstr 80 (Windows); 2. Check whether port 80 is open; 3. Check the Nginx startup message in the system log; 4. Use third-party tools, such as Nagios, Zabbix, and Icinga.

How to configure cloud server domain name in nginx How to configure cloud server domain name in nginx Apr 14, 2025 pm 12:18 PM

How to configure an Nginx domain name on a cloud server: Create an A record pointing to the public IP address of the cloud server. Add virtual host blocks in the Nginx configuration file, specifying the listening port, domain name, and website root directory. Restart Nginx to apply the changes. Access the domain name test configuration. Other notes: Install the SSL certificate to enable HTTPS, ensure that the firewall allows port 80 traffic, and wait for DNS resolution to take effect.

How to start containers by docker How to start containers by docker Apr 15, 2025 pm 12:27 PM

Docker container startup steps: Pull the container image: Run "docker pull [mirror name]". Create a container: Use "docker create [options] [mirror name] [commands and parameters]". Start the container: Execute "docker start [Container name or ID]". Check container status: Verify that the container is running with "docker ps".

How to create containers for docker How to create containers for docker Apr 15, 2025 pm 12:18 PM

Create a container in Docker: 1. Pull the image: docker pull [mirror name] 2. Create a container: docker run [Options] [mirror name] [Command] 3. Start the container: docker start [Container name]

How to check nginx version How to check nginx version Apr 14, 2025 am 11:57 AM

The methods that can query the Nginx version are: use the nginx -v command; view the version directive in the nginx.conf file; open the Nginx error page and view the page title.

How to start nginx server How to start nginx server Apr 14, 2025 pm 12:27 PM

Starting an Nginx server requires different steps according to different operating systems: Linux/Unix system: Install the Nginx package (for example, using apt-get or yum). Use systemctl to start an Nginx service (for example, sudo systemctl start nginx). Windows system: Download and install Windows binary files. Start Nginx using the nginx.exe executable (for example, nginx.exe -c conf\nginx.conf). No matter which operating system you use, you can access the server IP

See all articles