nginx cómo configurar el equilibrio de carga

https://m.php.cn/nginx/423607.html

El equilibrio de carga es una de las cosas que tiene que hacer nuestro sitio web de alto tráfico. Permítanme presentarles la configuración de equilibrio de carga en el servidor Nginx. Espero que ayude a los estudiantes que lo necesitan.

Balanceo de carga

Veamos brevemente qué es el equilibrio de carga. Comprender el significado literal puede explicar la carga promedio compartida de N servidores, y no hará que un servidor esté inactivo debido a una carga alta en un servidor. Entonces, la premisa del equilibrio de carga es tener múltiples servidores para lograr, es decir, más de dos.

Entorno de prueba
Dado que no hay servidor, esta prueba aloja directamente el nombre de dominio especificado y luego instala tres CentOS en VMware.

Nombre de dominio de prueba: a.com

Una IP del servidor: 192.168.5.149 (principal)

IP del servidor B: 192.168.5.27

IP del servidor C: 192.168.5.126

Idea de implementación
Se utiliza un servidor como servidor principal, y el nombre de dominio se resuelve directamente en el servidor A (192.168.5.149), y el servidor A equilibra la carga en el servidor B (192.168.5.27) y el servidor C (192.168.5.126).


Resolución de nombre de dominio

Como no es un entorno real, el nombre de dominio utilizará a.com como prueba, por lo que la resolución de a.com solo se puede establecer en el archivo de hosts.

Abierto: C: WindowsSystem32driversetchosts

Agregar al final

192.168.5.149 a.com

Guarde y salga, y luego inicie el comando ping del modo de comando para ver si se ha configurado correctamente

 

De la captura de pantalla, se ha resuelto con éxito a.com a 192.168.5.149IP

Un servidor nginx.conf configuración
Abra nginx.conf, la ubicación del archivo está en el directorio conf del directorio de instalación de nginx.

Agregue el siguiente código en la sección http

1

2

3

4 4

5 5

6 6

7 7

8

9 9

10

11

12

13

14

15

upstream a.com {

      server  192.168.5.126:80;

      server  192.168.5.27:80;

}

   

server{

    listen 80;

    server_name a.com;

    location / {

        proxy_pass         http://a.com;

        proxy_set_header   Host             $host;

        proxy_set_header   X-Real-IP        $remote_addr;

        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

    }

}

Guardar y reiniciar nginx

Configuración del servidor B, C nginx.conf
Abra nginx.confi, agregue el siguiente código en la sección http

1

2

3

4 4

5 5

6 6

server{

    listen 80;

    server_name a.com;

    index index.html;

    root /data0/htdocs/www;

}

Guardar y reiniciar nginx

Prueba
Al acceder a a.com, para distinguir a qué servidor recurrir, escribí un archivo index.html de contenido diferente en los servidores B y C, respectivamente, para hacer una distinción.

Abra el navegador para acceder a los resultados de a.com y actualice para encontrar que todas las solicitudes se asignan al servidor B (192.168.5.27) y al servidor C (192.168.5.126) por el servidor principal (192.168.5.149) respectivamente, y se logra el efecto de equilibrio de carga.

 

¿Qué sucede si uno de los servidores se cae?
Cuando un servidor deja de funcionar, ¿afectará el acceso?

Primero echemos un vistazo al ejemplo. Según el ejemplo anterior, suponga que el servidor C 192.168.5.126 está inactivo (porque no es posible simular el tiempo de inactividad, así que apagué el servidor C) y luego vengo a visitarlo.

Resultados de la visita:

 

Descubrimos que aunque el servidor C (192.168.5.126) está inactivo, no afecta el acceso al sitio web. De esta manera, no se preocupará por arrastrar todo el sitio debido a un tiempo de inactividad de la máquina en el modo de equilibrio de carga.

¿Qué sucede si b.com también quiere configurar el equilibrio de carga?
Es muy simple, lo mismo que la configuración de a.com. Como sigue:

Suponga que la IP del servidor principal de b.com es 192.168.5.149, y la carga está equilibrada en las máquinas 192.168.5.150 y 192.168.5.151

Ahora resuelva el nombre de dominio b.com a 192.168.5.149IP.

Agregue el siguiente código a nginx.conf del servidor principal (192.168.5.149):

1

2

3

4 4

5 5

6 6

7 7

8

9 9

10

11

12

13

14

15

upstream b.com {

      server  192.168.5.150:80;

      server  192.168.5.151:80;

}

   

server{

    listen 80;

    server_name b.com;

    location / {

        proxy_pass         http://b.com;

        proxy_set_header   Host             $host;

        proxy_set_header   X-Real-IP        $remote_addr;

        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

    }

}


Guardar y reiniciar nginx

Configure nginx en máquinas 192.168.5.150 y 192.168.5.151, abra nginx.conf y agregue el siguiente código al final:

1

2

3

4 4

5 5

6 6

server{

    listen 80;

    server_name b.com;

    index index.html;

    root /data0/htdocs/www;

}

Guardar y reiniciar nginx

Después de completar los siguientes pasos, puede lograr la configuración de equilibrio de carga de b.com.

¿No puede el servidor principal proporcionar servicios?
En el ejemplo anterior, hemos aplicado el equilibrio de carga del servidor principal a otros servidores, por lo que el servidor principal en sí también se puede agregar a la lista de servidores, para que no se desperdicie tomar un servidor simplemente como una función de reenvío, sino también participar Para prestar servicios.

Tres servidores en el caso anterior:

A服务器IP :192.168.5.149 (主)

B服务器IP :192.168.5.27

C服务器IP :192.168.5.126

我们把域名解析到A服务器,然后由A服务器转发到B服务器与C服务器,那么A服务器只做一个转发功能,现在我们让A服务器也提供站点服务。

我们先来分析一下,如果添加主服务器到upstream中,那么可能会有以下两种情况发生:

1、主服务器转发到了其它IP上,其它IP服务器正常处理;

2、主服务器转发到了自己IP上,然后又进到主服务器分配IP那里,假如一直分配到本机,则会造成一个死循环。

怎么解决这个问题呢?因为80端口已经用来监听负载均衡的处理,那么本服务器上就不能再使用80端口来处理a.com的访问请求,得用一个新的。于是我们把主服务器的nginx.conf加入以下一段代码:

1

2

3

4

5

6

server{

    listen 8080;

    server_name a.com;

    index index.html;

    root /data0/htdocs/www;

}



重启nginx,在浏览器输入a.com:8080试试看能不能访问。结果可以正常访问

 

既然能正常访问,那么我们就可以把主服务器添加到upstream中,但是端口要改一下,如下代码:

1

2

3

4

5

upstream a.com {

      server  192.168.5.126:80;

      server  192.168.5.27:80;

      server  127.0.0.1:8080;

}

由于这里可以添加主服务器IP192.168.5.149或者127.0.0.1均可以,都表示访问自己。

重启Nginx,然后再来访问a.com看看会不会分配到主服务器上。

 

主服务器也能正常加入服务了。

最后
一、负载均衡不是nginx独有,著名鼎鼎的apache也有,但性能可能不如nginx。

二、多台服务器提供服务,但域名只解析到主服务器,而真正的服务器IP不会被ping下即可获得,增加一定安全性。

 

三、upstream里的IP不一定是内网,外网IP也可以。不过经典的案例是,局域网中某台IP暴露在外网下,域名直接解析到此IP。然后又这台主服务器转发到内网服务器IP中。

四、某台服务器宕机、不会影响网站正常运行,Nginx不会把请求转发到已宕机的IP上。

更多Nginx相关技术文章,请访问Nginx教程栏目进行学习!

以上就是nginx怎么配置负载均衡的详细内容,更多请关注php中文网其它相关文章!

发布了77 篇原创文章 · 获赞 182 · 访问量 58万+

Supongo que te gusta

Origin blog.csdn.net/hellojoy/article/details/103903411
Recomendado
Clasificación