第十七周--作业
1、nginx负载均衡中常见的算法及原理有哪些?
rr轮询 rr轮询算法为nginx默认调度算法,按客户端请求顺序把客户端的请求逐一分配到不同的后端节点服务器,这相当于LVS中的rr轮询算法。如果后端节点服务器宕机,宕机的服务器会被自动从节点服务器池中剔除,以使客户端的用户访问不受影响。新的请求会分配给正常的服务器。 wrr加权轮询 在rr轮询算法的基础上加上权重,即为权重轮询算法。权重越高,在被访问的概率越大。可以根据服务器的配置和性能指定权重值大小,达到合理有效的地利用主机资源。 ip_hash源地址hash 源地址hash调度算法,基于的客户端的remote_addr(源地址IPv4的前24位或整个IPv6地址)做hash计算,以实现会话保持。该方法确保来自同一客户端的请求将始终传递到同一服务器,除非该服务器不可用。在该服务器不可用的情况下,客户端请求将被传递到另一台服务器。很可能,它也将始终是同一台服务器。 least_conn最少连接 最少连接调度算法,优先将客户端请求调度到当前连接最少的后端服务器,相当于LVS中的WLC加权最少连接算法。同时考虑服务器的权重,如果后端服务器的连接数都相同时,则使用WRR加权轮询调度算法。 hash KEY [consistent] 一致性hash算法 基于指定请求报文中首部字段或者URI等key做hash计算。可以包含文本、key变量及其组合。 如果consistent指定了参数,将使用ketama一致性hash算法。该方法确保在将服务器添加到组或从组中删除时,只有少数密钥将重新映射到不同的服务器。这有助于为缓存服务器实现更高的缓存命中率。 一致性hash算法适用于后端是Cache服务器(如varnish)时使用,consistent定义使用一致性hash运算,一致性hash基于取模运算 注意:从组中添加或删除服务器可能会导致将大部分密钥重新映射到不同的服务器。
2、使用rewrite规则实现将所有到a域名的访问rewrite到b域名
修改Nginx服务器配置文件
vim /apps/nginx/conf.d/pc.conf
server {
listen 80;
server_name www.magedu.org;
root /data/nginx/html/pc/;
location / {
root /data/nginx/html/pc/;
rewrite / http://www.jf.com permanent;
}
}
server {
listen 80;
server_name www.jf.com;
root /data/nginx/html/jf/;
}
创建缺少的文件
mkdir /data/nginx/html/{pc,jf}/ -p
echo 'pc website' > /data/nginx/html/pc/index.html
echo 'this is the new website page' > /data/nginx/html/jf/index.html
绑定ip地址
vim /etc/hosts
10.0.0.7 www.magedu.org www.jf.com
重读配置文件
nginx -t
nginx -s reload
测试
curl www.magedu.org -L
3、实现反向代理客户端IP透传
修改Nginx服务器配置文件
server {
listen 80;
proxy_set_header X-Real-IP $remote_addr;
server_name www.magedu.org;
root /data/nginx/html/pc/;
location / {
root /data/nginx/html/pc;
proxy_pass http://10.0.0.8;
}
}
修改http服务首页为hello word
修改http服务配置文件
vim vim /etc/httpd/conf/httpd.conf
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\ \" combined
此行修改为
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\ "%{X-Real-IP}i\" \" combined
重启服务
客服端测试访问
curl www.magedu.org
4、利用LNMP实现wordpress站点搭建
安装数据库服务
yum -y install mariadb-server
修改配置文件,添加server-id和开启二进制日志
server-id=17
log-bin
systemctl enable mariadb-server
systemctl start mariadb-server
创建用户账号并授权
登陆mariadb
mysql
创建账号
create databases wordpress
create user 'wordpress@10.0.0.%' identified by '123456';
grant all on wordpress.* to 'wordpress@10.0.0.%';
部署php
安装依赖包
yum install gcc openssl-devel libxml2-devel bzip2-devel sqlite-devel libmcrypt-devel oniguruma-devel
下载并解压php源码包
https://www.php.net/releases/
tar xvf php-7.4.11.tar.gz -C /usr/local/
运行configure脚本
./configure --prefix=/apps/php74 --enable-mysqld --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-openssl --with-zlib --with-config-file-path=/etc --with-config-file-scan-dir=/etc/php.d --enable-mbstring --enable-xml --enable-sockets --enable-fpm --enable-maintainer-zts --disable-fileinfo
编译安装并安装
make -j 2 && make install
准备PHP配置文件
cp php.ini-production /etc/php.ini
cp php-fpm.conf.default php-fpm.conf
cp www.conf.default www.conf
vim /apps/php74/etc/php-fpm.d/www.conf
修改一下项:
[root@centos7 php-fpm.d]#grep '^[^;]' www.conf
[www]
user = www
group = www
listen = 127.0.0.1:9000
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3
access.log = log/$pool.access.log
slowlog = log/$pool.log.slow
创建系统用户与日志文件
useradd -r -s /sbin/nologin www
mkdir /apps/php74/log
准备启动文件
cp /usr/local/php-7.4.11/sapi/fpm/php-fpm.service /usr/lib/systemd/system
systemctl daemon-reload
systemctl enable --now php-fpm.service
查看9000端口是否打开
ss -ntl
部署nginx服务
下载依赖包
yum -y install gcc pcre-devel openssl-devel zlib-devel
解压源码包
tar xvf nginx-1.18.0.tar.gz -C /usr/local/
执行configure脚本
./configure --prefix=/apps/nginx --user=www --group=www --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_stub_status_module --with-http_gzip_static_module --with-pcre --with-stream --with-stream_ssl_module --with-stream_realip_module
编译并安装
make -j 2 && make install
准备启动脚本
mkdir /apps/nginx/run
vim /apps/nginx/conf/nginx.conf
#添加pid run/nginx.pid;
vim /usr/lib/systemd/system/nginx.service
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target
[Service]
Type=forking
PIDFile=/apps/nginx/run/nginx.pid
ExecStart=/apps/nginx/sbin/nginx -c /apps/nginx/conf/nginx.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s TERM $MAINPID
LimitNOFILE=100000
[Install]
WantedBy=multi-user.target
systemctl daemon-reload
systemctl enable --now nginx
创建软连接
ln -s /apps/nginx/sbin/nginx /usr/sbin/
检查配置文件语法
nginx -t
配置nginx支持fastcgi
vim /apps/nginx/conf/nginx.conf
server {
listen 80;
server_name www.dnhc.com;
location / {
root /data/nginx/wordpress;
index index.php index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php$ {
root /data/nginx/wordpress;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ ^/(ping|pm_status)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_script_name;
include fastcgi_params;
}
nginx -t
重读配置文件
nginx -s reload
准备php测试页面
mkdir -p /data/nginx/wordpress
vim /data/nginx/wordpress/test.php
<?php
phpinfo ();
?>
绑定域名
vim /etc/hosts
部署wordpress
下载地址: https://cn.wordpress.org/download/ 解压源码包 tar xvf wordpress-6.0.1-zh_CN.tar.gz -C /usr/local/ 移动wordpress文件 cp -r /usr/local/wordpress/* /data/nginx/wordpress/ 修改文件权限 chown -R www.www /data/nginx/wordpress/
注意:初始化web页面登陆时会包403错误
在nginx配置文件里添加默认访问页面index.php即可

浙公网安备 33010602011771号