day-34 反向代理、负载均衡服务(1)

一、 反向代理

1、代理服务基本概述

反向代理是通过内网访问外网,反向代理只能代理一台

代理服务器接收接受客户端的连接请求,将请求转发费内网的服务器,并将服务器上得到的结果返回给客户端,此时代理服务器对外就是反向代理服务器。

2、正向代理和反向代理

正向代理:客户端<——> 代理 <——> 服务端

反向代理:客户端 ----> 代理 -----> 服务端(用于公司集群架构)

区别在于服务 ”对象“ 不一样

正向代理的对象是客户端,为客户服务。

反向代理的对象是服务端,为服务端服务。

3、nginx代理支持的代理协议

图片.png

4、nginx反向代理场景实践

1、proxy代理服务器,配置监听eth0的80端口,使10.0.0.0网段的用户,能够通过代理服务器访问到后端的172.16.1.7的8080端口内容

#1、编辑代理配置文件
[root@lb01 ~]# cd /etc/nginx/conf.d/
[root@lb01 conf.d]# cat proxy_web.yangdan.com.conf 
server {
    listen 80;
    server_name web.yangdan.com;

    location / {
        proxy_pass http://10.0.0.7:80;
        proxy_http_version 1.1;
        proxy_set_header Host $http_host;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

#2、检测语法,并重启,设置开机自启动
[root@lb01 conf.d]# nginx -t
[root@lb01 conf.d]# systemctl restart nginx
[root@lb01 conf.d]# systemctlenable nginx

2、web01 服务器上 配置一个网站,监听在8080端口,仅172网段能访问

#1、编辑web01后端配置文件
[root@lb01 ~]# cd /etc/nginx/conf.d/
[root@web01 conf.d]# cat web.yngdan.com.conf 
server {
    listen 80;
    server_name web.yangdan.com;

    location / {
        root /html;
        index index.html;
    }
}

#2、创建站点目录
[root@web01 conf.d]# mkdir /html

#3、把web01写入到站点目录下的index.html下
[root@web01 conf.d]# echo "web01" > /html/index.html

#4、检测语法、并重启nginx服务
[root@web01 conf.d]# systemctl restart nginx

5、扩展知识

服务器默认有65535个端口,通常系统服务需要占用部分端口:1~10000
配置一台主机作为nginx代理服务,最多支持5w的tcp连接,因为端口数受限
配置一台后端的应用服务,最多能支持2w-3w左右的tcp连接,因为当一个请求过来
nginx代理通过随机端口--请求-->nginx应用服务--通过-->随机端口--请求-->php动态程序--通过-->随机端口-->mysql

二、负载均衡

6、负载均衡

就是将工作任务进行平衡、分摊到多个操作进行运行。

负载均衡提供了一种透明且廉价有效的方法扩展服务器和网络设备、加强网络数据处理能力、增强吞吐量、提高网路络的可用性和灵活性。

7、四层负载均衡 (转发)(传输层)

四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。效率高,性能快

四层负载均衡的效率高、能力强。四层是基于ip+端口的;

8、七层负载均衡(代理)(应用层)

七层负载均衡工作在OSI模型的应用层,应用层协议较多,常用http、radius、dns等。七层负载就可以基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。功能多,效率低。

基于 URL 等应用层信息的负载均衡;

基于 MAC 地址的二层负载均衡和基于 IP 地址的三层负载均衡。


图片.png

9、七层负载均衡配置实例

#1、进到conf.d目录里、准备nginx负载均衡
[root@lb01 ~]# cd /etc/nginx/conf.d
[root@lb01 conf.d]# cat proxy_web.oldxu.com.conf 
upstream web {
    server 172.16.1.7:80;
    server 172.16.1.8:80;
}

server {
    listen 80;
    server_name web.oldxu.com;

    location / {
        proxy_pass http://web;
        include proxy_params;
    }
}

#2、将nginx负载均衡文件proxy_prarms写到一个文件里,方便调度使用
[root@web ~]# cd /etc/nginx/con.d
[root@lb01 conf.d]# cat /etc/nginx/proxy_params 
proxy_http_version 1.1;
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;


#后端web配置 (为了区分,将两台web的站点配置的不一样,以便测试效果)
[root@web01 conf.d]# cat web.oldxu.com.conf 
server {
    listen 80;
    server_name web.oldxu.com;

    location / {
        root /html;
        index index.html;
    }
}

10、nginx负载均衡调度算法

图片.png

11、nginx负载均衡后端状态

图片.png

12、七层负载均衡实现多台登录测试

1、在 172.16.1.8 和 172.16.1.7 安装 phpmyadmin

分别进行测试-->测试登录

wget [https://files.phpmyadmin.net/phpMyAdmin/4.8.4/phpMyAdmin-4.8.4-all-languages.zip](https://files.phpmyadmin.net/phpMyAdmin/4.8.4/phpMyAdmin-4.8.4-all-languages.zip)

#1、安装phpadmin(web01、web02都装)
[root@web01 ~]# cd /etc/nginx/conf.d
[root@web01 conf.d]# cd /code
[root@web01 code]# rz phpMyAdmin-4.8.4-all-languages.zip
[root@web01 code]# unzip phpMyAdmin-4.8.4-all-languages.zip

#2、配置phpadmin远程连接到数据库
[root@web01 code]# cd phpMyAdmin-4.8.4-all-languages/
[root@web01 phpMyAdmin-4.8.4-all-languages]# cp config.sample.inc.php config.inc.php
[root@web01 phpMyAdmin-4.8.4-all-languages]# vim config.inc.php
/* Server parameters */
$cfg['Servers'][$i]['host'] = '172.16.1.51';

2、接入负载均衡 ------> 代理后端两台

#配置负载均衡

[root@lb01 ~]# cd /etc/nginx/conf.d
[root@lb01 conf.d]# cat proxy_php.oldxu.com.conf 
upstream  php {
    ip_hash;
    server 172.16.1.7;
    server 172.16.1.8;
}

server {
    listen 80;
    server_name php.oldxu.com;
    location / {
        proxy_pass http://php;
        proxy_set_header Host $http_host;
    }
}

3、既希望能够实现流量的均摊,又希望会话的问题得以保持, 所以引入了redis

#1、安装Redis
[root@redis ~]# yum install redis -y

#2、配置redis
[root@redis ~]# sed -i '/^bind/c bind 127.0.0.1 172.16.1.51' /etc/redis.conf

#3、启动redis
[root@redis ~]# systemctl enable redis
[root@redis ~]# systemctl start redis

#4、改造php, session写本地修改为写入redis中  (所有的web上都需要配置)
    前提:  已经安装过了redis的模块---> php71w-pecl-redis
    
#1、修改php存储session至redis中
[root@web01 ~]# vim /etc/php.ini
session.save_handler = redis
session.save_path = "tcp://172.16.1.51:6379?weight=1"

#2、修改php-fpm 注释默认存储session的位置
[root@web01 ~]# vim /etc/php-fpm.d/www.conf
;php_value[session.save_handler] = files
;php_value[session.save_path]    = /var/lib/php/session

#3、将修改后的配置文件,推送至web02
[root@web01 ~]# scp /etc/php.ini root@172.16.1.8:/etc/  
[root@web01 ~]# scp /etc/php-fpm.d/www.conf  root@172.16.1.8:/etc/php-fpm.d/www.conf

#4、重启172.16.1.7 172.16.1.8两台服务器的php-fpm
[root@web02 conf.d]# systemctl restart php-fpm

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

推荐阅读更多精彩内容