web集群搭建

扩展多个web应用

原因: 单台web服务器能抗住的访问是有限的,配置多台web服务器能提升更高的访问速度,能够接受更多的用户请求。
优点:

  1. 提高冗余
  2. 提高性能
    实现方法:
    1.准备web02服务器

2.安装nginx和php环境

[root@web01 ~]# scp /etc/yum.repos.d/nginx.repo root@172.16.1.8:/etc/yum.repos.d/nginx.repo
[root@web01 ~]# scp php.zip root@172.16.1.8:~

	[root@web02 ~]# unzip php.zip				
	#解压web01推送过来的压缩包
	[root@web02 ~]# yum localinstall php/*.rpm		
	#通过本地方式安装所有的rpm
	[root@web02 ~]# yum install nginx -y

3.拷贝web01上的nginx配置、php配置

[root@web01 ~]# scp -rp /etc/nginx root@172.16.1.8:/etc/
	[root@web01 ~]# scp -rp /etc/php-fpm.d/www.conf  root@172.16.1.8:/etc/php-fpm.d/www.conf
	[root@web01 ~]# scp -rp /etc/php.ini  root@172.16.1.8:/etc/php.ini

4.将web01代码推送到web02

[root@web01 ~]# scp -rp /code root@172.16.1.8:/

5.依次启动服务

	[root@web02 ~]# groupadd -g 666 www
	[root@web02 ~]# useradd -u 666 -g 666 www
	[root@web02 ~]# systemctl restart nginx php-fpm
	[root@web02 ~]# systemctl enable nginx php-fpm
	[root@web02 ~]# chown -R www.www /code/

会产生的问题:
静态资源不一致
web空间不足
容量不足

解决方案:
引入nfs
操作步骤:


1.安装一台NFS服务器,配置并共享一个目录。
	思路:任何一个服务,都是  安装  配置  启动。


	#安装配置
	[root@nfs ~]# yum install nfs-utils -y
	[root@nfs ~]# cat /etc/exports
	/data/blog 172.16.1.0/24(rw,sync,all_squash,anonuid=666,anongid=666)

	#初始化环境
	[root@nfs ~]# groupadd -g 666 www
	[root@nfs ~]# useradd -u666 -g666 www
	[root@nfs ~]# rm -rf /data/
	[root@nfs ~]# mkdir /data/blog -p
	[root@nfs ~]# chown -R www.www /data/blog/


	#重启
	[root@nfs ~]# systemctl restart nfs
	[root@nfs ~]# systemctl enable nfs


2.找到网站静态资源存放的路径,然后进行NFS的共享。( 不是必须的 )

	地址:http://blog.oldxu.com/wp-content/uploads/2020/04/timg.jpeg
		
	路径:/code/wordpress/wp-content/uploads/2020/04/timg.jpeg
		

	需要共享的目录:/code/wordpress/wp-content/uploads/



	在所有的web节点执行如下操作:
		[root@web02 ~]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads/
		[root@web01 ~]# mount -t nfs 172.16.1.31:/data/blog /code/wordpress/wp-content/uploads/




3.测试,web02上传。web01查看,如果没有问题,说明共享存储对接完成。


负载均衡

  1. DNS轮询,需要依赖web节 点是公网IP,
    配置DNS的A记录
    b l0g.0 Ldxu. com
    10.0.0.7
    10.0.0.8
    10.0.0.9
    1.需要所有的web节点具备公网IP地址
    2.公网独立IP需要费用,而且不便宜。
    3.所有的web节点有公网IP,不安全。
    4.DNS轮询机制。没有健康检查功能。( 体验差)

  2. 优点
    1.所有的web节点不在需要有公网IP
    2.节省成本
    3.保证安全
    4.能够对后端的web节点进行健康检查机制

  3. 负载均衡有对应的调度算法
    轮询
    加权轮询
    最少连接数调度算法

nginx代理

代理是客户端与服务端的中间人。

nginx代理服务常见模式

正向代理

客户端<–>代理->服务端
正向代理代理的对象是客户端,为客户端服务
(常用于为客户端提供科学上网的方式)

反向代理

用于公司集群架构中,
客户端->代理<–>服务端
反向代理代理的对象是服务端,为服务端服务
(常用于)

nginx反向代理模式

反向代理模式Nginx反向代理模块
http、websocket、 httpsngx_ http_ proxx_ module
fastcgingx_ http_fastcgi_ module
wusgingx_http_uwsgi_ module
grpcngx_http_v2_module

配置反向代理

  1. 代理服务器安装nginx
  2. 配置后端web节点web.oldxu.com:8080
server {
	listen 8080;
	server_name web.oldxu.com;
	root /web;
	location / {
		index index.html;
	}
}

  1. 配置nginx反向代理,代理后端的web节点
server {
	listen 80;
	server_name web.oldxu.com;
	location / {
		proxy_pass http://10.0.0.7:8080;
	}
}

如果把上面的实验的后端web_server的端口为80端口,代理服务器的端口也改成80,这时用户返回的结果可能会不符合我们的预期。
这是因为我们的代理服务器并没有指定代理访问的域名,导致代理服务器只知道访问10.0.0.7的80端口,但是并不知道访问哪个域名,因此就会出错,这个时候我们只需要在10.0.0.5的配置文件中加入;
proxy_set_Heater Host $http_host;
就可以解析域名了。
我们通过抓包工具会发现,代理服务器传输数据时会封装成http1.0的包,但是我们直接传输确实http1.1,为了传输的更高效,我们最好使用http1.1为好,解决方法:
proxy_ http._version 1.1;
如何透传真实的ip方便我们做访问控制?
proxy_set_header X- Forwarded- For $proxy_add_x_forwarded_for;

nginx代理相关的参数:
proxy_pass http://172.16.1.7:80; 域名
proxy_http_version 1.1; http版本
proxy_set_header Host $http_host; 真实域名
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 真实ip
proxy_connect_timeout 30; 连接超时时间 单位:s
proxy_send_timeout 60; 后端服务器回传给nginx代理服务器的超时时间 单位:s
proxy_read_timeout 60; 响应超时时间 单位:s
proxy_ buffering on; 边传边收
proxy_buffer_size 32k; header头的缓存区大小
proxy_buffers 4128k; nginx的缓存区大小

nginx的代理接受的用户连接有限 最多只能使用65535个端口,最多能支撑50000的连接。技能代理一台后端webserver。多台webserver组成的集群需要使用nginx负载均衡来实现。
我们可以把所有的参数放到一个文件中,在配置文件中使用include命令将参数传递进去,进而达到网站的优化功能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值