第十七周--作业

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<br><br>修改配置文件,添加server-id和开启二进制日志<br>server-id=17<br>log-bin<br><br>systemctl enable mariadb-server<br>systemctl start mariadb-server<br><br>创建用户账号并授权<br>登陆mariadb<br>mysql<br><br>创建账号<br>create databases wordpress<br>create user 'wordpress@10.0.0.%' identified by '123456';<br>grant all on wordpress.* to 'wordpress@10.0.0.%';

  部署php

安装依赖包<br>yum install gcc openssl-devel libxml2-devel bzip2-devel sqlite-devel libmcrypt-devel oniguruma-devel<br><br>下载并解压php源码包<br>https://www.php.net/releases/​​<br>tar xvf php-7.4.11.tar.gz -C /usr/local/<br><br>运行configure脚本<br>./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<br><br>编译安装并安装<br>make -j 2 && make install<br><br>准备PHP配置文件<br>cp php.ini-production /etc/php.ini<br>cp php-fpm.conf.default php-fpm.conf<br>cp www.conf.default www.conf<br>vim /apps/php74/etc/php-fpm.d/www.conf<br>修改一下项:创建系统用户与日志文件<br>useradd -r -s /sbin/nologin www<br>mkdir /apps/php74/log<br><br>准备启动文件<br>cp /usr/local/php-7.4.11/sapi/fpm/php-fpm.service /usr/lib/systemd/system<br>systemctl daemon-reload<br>systemctl enable --now php-fpm.service<br><br>查看9000端口是否打开<br>ss -ntl

[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

  部署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<br><br>准备php测试页面<br>mkdir -p /data/nginx/wordpress<br>vim /data/nginx/wordpress/test.php<br><?php<br>phpinfo ();<br>?><br>绑定域名<br>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即可

posted @   এ蓝桉、  阅读(12)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示