Centos7+Nginx负载均衡(LoadBalance)配置详情介绍Centos7+Nginx负载均衡(Load Balance)配置详情介绍
Centos7+Nginx负载均衡(Load Balance)配置详情介绍
随着互联⽹信息的爆炸性增长,负载均衡(load balance)已经不再是⼀个很陌⽣的话题,顾名思义,负载均衡即是将负载分摊到不同的服务单元,既保证服务的可⽤性,⼜保证响应⾜够快,给⽤户很好的体验。快速增长的访问量和数据流量催⽣了各式各样的负载均衡产品,很多专业的负载均衡硬件提供了很好的功能,但却价格不菲,这使得负载均衡软件⼤受欢迎,nginx就是其中的⼀个,在linux下有Nginx、LVS、Haproxy等等服务可以提供负载均衡服务,⽽且Nginx提供了⼏种分配⽅式(策略),当然现在主流的公有云(Windows Azure)提供的服务在均衡分配⽅式基本上都类似于Nginx的轮询(round robin)分配⽅式和加权轮询(Weight round robin)分配⽅式,对于其他公有云产品没有具体试验过,所以我们今天主要介绍⼀下Nginx下的⼏种分配⽅式,具体见下:
1、轮询(默认)
每个请求按时间顺序逐⼀分配到不同的后端服务器,如果后端服务器down掉,能⾃动剔除。
2、weight
指定轮询⼏率,weight和访问⽐率成正⽐,⽤于后端服务器性能不均的情况。 例如:
upstream server_pool{
server  weight=10;
server  weight=10;
}
3、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问⼀个后端服务器,可以解决session的问题。 例如:
upstream server_pool{
ip_hash;
server :80;
server :80;
}
4、fair(第三⽅)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream server_pool{
server :80;
server :80;
fair;
}
注意:整个分配⽅式是通过修改定义负载均衡的server配置中添加的。
我们今天主要介绍我个⼈认为使⽤最多的⼏种⽅式吧;前⾯四种。
我们后端使⽤两台Apache服务作为WEB服务,具体安装就不多介绍了。
Yum install httpd
查看httpd 版本
rpm -qa | grep httpd
接下来我们⾸先要为apache定义⼀个 默认的页⾯,⽅便区分;我们为了后⾯的数据统计所以页⾯内容显⽰的⽐较少
Vim /var/www/httml/
</html>
<!DOCTYPE html>
<html>
<head>
<title>Welcome to Apache</title>
<style>
body {
35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
<style type="text/css">
h1{color:red}
h2{color:blue}
h3{color:green}
h4{color:yellow}
}
</style>
</head><body bgcolor='7D7DFF'>
<h2>HostName:A-S ----->IP:</h2>
</body>
</html>
保存退出,启动服务
Systemctl start httpd
然后添加默认的防⽕墙端⼝8o
Firewall-cmd --zone=public --add-port='80/tcp' --permanent
或者vim /etc/firewalld/zone/
添加⼀下格式
<port portocal='tcp' port='80'>
我们测试访问
我们准备第⼆台WEB服务()我们按照第⼀台的⽅式进⾏配置,再次就跳过了。
第⼆台主机的配置: 主机名 B-S
安装好httpd后,我们将a-s上的index拷贝到b-s服务器上
scp  root@:/var/www/html/
然后修改⽂件
我们为了后⾯的测试,我们将两台服务器的显⽰内容修改⼀下,为了通过服务进⾏批量测试。将两台Apache WEB服务的⽂件只显⽰服务器的名称及IP地址。
接下来我们就部署nginx,在Centos7上yum安装需要定义yum源
cd /etc/
vim
添加以下内容
[epel]
name=aliyun epel
baseurl=/epel/7Server/x86_64/
gpgcheck=0
Yum install nginx
nginx
启动服务
systemctl start nginx
我们接下来需要编辑nginx的默认配置⽂件来修改负载的配置
我们⾸先查看默认的配置⽂件
#user  nobody;
worker_processes  1;
#error_log  logs/;
#error_log  logs/  notice;
#error_log  logs/  info;
#pid        logs/;
events {
worker_connections  1024;
}
http {
include      ;
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/  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/  main;
location / {
root  html;
index  ;
}
#error_page  404              /;
# redirect server error pages to the static page /
#
error_page  500 502 503 504  /;
location = / {
root  html;
root  html;
}
# proxy the PHP scripts to Apache listening on :80
#
#location ~ \.php$ {
#    proxy_pass  ;
#}
# pass the PHP scripts to FastCGI server listening on :9000
#
#location ~ \.php$ {
#    root          html;
#    fastcgi_pass  :9000;
#    fastcgi_index  ;
#    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;        #    include        fastcgi_params;
#}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
#    deny  all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration    #
#server {
#    listen      8000;
#    listen      somename:8080;
#    server_name  somename  alias  ;
#    location / {
#        root  html;
#        index  ;
#    }
#}
# HTTPS server
#
#server {
#    listen      443 ssl;
#    server_name  localhost;
#    ssl_certificate      ;
#    ssl_certificate_key  ;
#    ssl_session_cache    shared:SSL:1m;
#    ssl_session_timeout  5m;
#    ssl_ciphers  HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers  on;
#    location / {
#        root  html;
#        index  ;
#    }
#}
}
然后我们需要修改默认配置
upstream    {
server  :80;
server  :80;
}
我们⾸先配置轮询的⽅式
# For more information on configuration, see:
#  * Official English Documentation: /en/docs/
#  * Official Russian Documentation: /ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/;
pid /run/;
# Load dynamic modules. See /usr/share/nginx/.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
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  /var/log/nginx/  main;
sendfile            on;
tcp_nopush          on;
tcp_nodelay        on;
keepalive_timeout  65;
types_hash_max_size 2048;
include            /etc/nginx/;
default_type        application/octet-stream;
#增加后端服务器的负载⽅式,我们默认使⽤轮询
upstream    {
server  :80;
server  :80;
}
# Load modular configuration files from the /etc/nginx/ directory.
# See /en/docs/ngx_core_#include
# for more information.
include /etc/nginx//*.conf;
server {
#listen      80 default_server;
#listen      [::]:80 default_server;
#server_name  _;
listen 80;
server_name ;
root        /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx//*.conf;
#增加的服务器配置
location / {
nginx 配置文件
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass ;
}
error_page 404 /;
location = / {
}
error_page 500 502 503 504 /;
location = / {

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。