第八周

1. 通过loganalyzer展示数据库中的日志

  架构如下

 

  产生日志机器10.0.0.5-----------------发送日志到----------10.0.0.6---------------存储到10.0.0.7mysql<<<<<<<<<<<<<<<<<<10.0.0.8lap访问数据库<<<<<<<<<<<浏览器访问程序

  

  1、实现LAP

 

  安装apache服务器,php链接Mysql的包

yum install -y httpd php-fpm php-mysqlnd
systemctl enable --now httpd php-fpm

 

  到这个目录下

cd /var/www/html

 

建立一个php后缀的文件

[root@localhost html]# cat index.php 
<?php
phpinfo();
?>

 

通过浏览器http协议访问这个文件

http://10.0.0.8/index.php

  出现如下内容说明php正常工作

 

 

 

 

 将程序上传到10.0.0.8

 

 解压

tar xf loganalyzer-4.1.12.tar.gz

 

解压后生成一个文件夹,将该文件夹里的src目录拷贝到/var/www/html目录下

 


2. 实现基于MYSQL验证的vsftpd虚拟用户访问

  10.0.0.5-centos8-mariadb-server

  10.0.0.200-vsftpd

 

yum install mariadb-server

 

2、创建vsftpd数据库,创建users表,插入用户名,密码信息;创建Mysql账户,授权

MariaDB [(none)]> create database vsftpd;
Query OK, 1 row affected (0.000 sec)

MariaDB [(none)]> use vsftpd;
Database changed
MariaDB [vsftpd]> create table users ( 
    -> id INT auto_increment not null primary key,
    -> name char(50) binary not null,
    -> password char(50) binary not null
    -> );
Query OK, 0 rows affected (0.004 sec)

MariaDB [vsftpd]> insert into users (name,password) values ( 'xiaobo',password('root'));
Query OK, 1 row affected (0.002 sec)

MariaDB [vsftpd]> select * from users;
+----+--------+-------------------------------------------+
| id | name   | password                                  |
+----+--------+-------------------------------------------+
|  1 | xiaobo | *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B |
+----+--------+-------------------------------------------+
1 row in set (0.000 sec)


MariaDB [vsftpd]> grant all on vsftpd.* to vsftpd@'10.0.0.%' identified by 'root';
Query OK, 0 rows affected (0.000 sec)

MariaDB [vsftpd]> flush privileges;
Query OK, 0 rows affected (0.000 sec)

 

3、10.0.0.200配置vsftpd

 

 

 yum install vsftpd -y


systemctl enable --now vsftpd

  

yum -y install vsftpd gcc gcc-c++ make mariadb-devel pam-devel    #编译前安装依赖

 

tar xf pam_mysql-0.7RC1.tar.gz -C /usr/local/src/   



./configure  --with-pam-mods-dir=/lib64/security

make install

 

 vim /etc/pam.d/vsftpd.mysql

auth required pam_mysql.so user=vsftpd passwd=root host=10.0.0.5 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=root host=10.0.0.5 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2

 

 


3. 配置samba共享,实现/www目录共享

 


4. 使用rsync+inotify实现/www目录实时同步

 

  10.0.0.4上/data/www目录----------------------rsync--------------------同步到10.0.0.5

 

  数据服务器:10.0.0.4-------有/data/www目录,需要同步到备用节点的/data/www目录下

  

  对于备用文件服务器10.0.0.5

  1、安装rsyncd包,实现service管理

yum install -y rsync-daemon

systemctl enable --now rsyncd  设置rsyncd开机启动且立即启动

 

  

 

 

  

  2、装好了上述包之后,会生成/etc/rsyncd.conf ,修改/etc/rsyncd.conf,一般配置如下

  

注意,/etc/rsyncd.conf这个文件里的注释,只能以#开头,不能中间插入

 

 

uid = root   
uid = root  
port = 874
#use chroot = no
max connections = 0
ignore errors
exclude = lost+found/
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no
#hosts allow = 10.0.0.0/24
[backup]
path = /data/backup/  
comment = backup dir
read only = no    
auth users = rsyncuser 
secrets file = /etc/rsync.pas

 

  注意这里的

auth users = rsyncuser  #默认anonymous可以访问rsync服务器
secrets file = /etc/rsync.pas

  这里需要建立一个文件,存放访问rsync的账户和密码

所以,这里,/etc/rsync.pas文件必须修改权限,

chmod 600 /etc/rsync.pas

编辑/etc/rsync.pas

 

 

 

做好所有配置后,重启rsync服务生效

  

  

客户端

  1、配置密码文件

  

echo '123456' >/etc/rsync.pas

  2、尝试写入

  

rsync --password-file=/etc/rsync.pas rsync://10.0.0.5/backup

 

  

 

 

按照这里提示,说的是密码文件other应没有权限

  

chmod 600 /etc/rsync.pas

 

客户端尝试同步文件 haha

rsync --password-file=/etc/rsync.pas haha rsync://rsyncuser@10.0.0.5/backup

 

 

  

 

 

 

客户端装inotify-tools

 yum -y install inotify-tools

 

 

在客户端建立一个脚本文件,写入如下内容,并后台执行

#!/bin/bash
SRC='/data/www/' #注意最后的/,rsync时,目录后有/,代表同步目录下的内容,没有/代表同步该目录和目录下的内容
DEST='rsyncuser@10.0.0.5::backup' #::两个冒号代表走tcp协议,具体的ip要自定义

inotifywait -mrq --exclude=".*\.swp" --timefmt '%Y-%m-%d %H:%M:%S' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} | while read DATE TIME DIR FILE;do
FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync.pas $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log #一旦检测到inotify的变化,就工改到服务器
done

 

 总结:

  客户端:

      1、需要建立脚本

      2、建立密码文件,并修改权限600

      3、安装inotify工具

 

  服务端:

      1、安装rsync-daemon包,实现service管理

      2、建立账户密码文件,修改权限600

 

 

 

 


5. LVS调度算法总结

  静态算法:不考虑后端服务器负载

  1、RR:roundrobin,轮询---------a b a  b

  2、WRR:Weighted RR,加权轮询-------a a a b a a a b,a占3权重,b占1权重

  3、SH:Source Hashing,根据源地址,调度到     客户端第一次访问的服务器,实现了会话绑定;不过某些服务器负载较大

  4、DH:Destination Hashing,根据目标地址,调度到第一次调度到的服务器

 

  动态算法:计算overhead,越小优先级越高

  1、长连接

  活动连接越多,非活动连接越少的服务器,overhead越大

   

  

  2、长连接加权重

  第一种算法除以权重,自然,权重越大,overhead值越小,调度优先级越高---------------------默认算法

 

  3、

 

 

 

 

 

 

 

 

 

 

 


6. LVS的跨网络DR实现

 

 由于企业多用DR内网,所以采用单网段实现

 

负载均衡集群:

  10.0.0.4-------VS虚拟服务器 VIP:10.0.0.100/24  GW:   10.0.0.200/24

  10.0.0.5--------RS1   VIP:10.0.0.100/24      GW:   10.0.0.200/24

  10.0.0.6--------RS2   VIP:10.0.0.100/24     GW:   10.0.0.200/24

 

路由器:

  eth0: 10.0.0.200/24

  eth1:192.168.10.200/24

  

客户端:

  192.168.10.4/24

  GW:192.168.10.200/24

 

 

 第一步:

  配置RS1 10.0.0.5   GW:   10.0.0.200/24

  

 

     配置RS2 10.0.0.6  GW:   10.0.0.200/24

    

 

    配置VS的ip和网关

  

 

 第二步:配置路由器

    

 

   2、开启ip_forward

 

      查看是否开启了ip_forward

 cat  /proc/sys/net/ipv4/ip_forward

      

      如果显示如图

  

 

 

    值为0,表示未开启,那么需要开启;值为1,表示已开启,略过下一步

      开启方法:

    

        a、vim /etc/sysctl.conf

          net.ipv4.ip_forward = 0   # 0表示关闭转发,1表示开启转发
           b、执行命令,sysctl -p 使该参数生效

     

    

 

  第三步:配置访问客户端 

    

 

     最重要的就是网关配置

 

 

上述步骤结束后,可以测试一下网络情况,从客户端到10网段10.0.0.5机器可通

 

 

 

 

 

 

 

  10网段内,10.0.0.5到192.168.10.4机器也可通

 

  

 

 

说明网络配置没问题

 

 现在开始配置VS RS1 RS2的VIP

  首先,关闭RS1,RS2的arp应答和announce向外发自身的mac

  下面的命令在RS1 RS2上都要执行

echo 1 >   /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 >   /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 >   /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 >   /proc/sys/net/ipv4/conf/lo/arp_announce 

echo 1 >   /proc/sys/net/ipv4/conf/all/arp_ignore;echo 2 >   /proc/sys/net/ipv4/conf/all/arp_announce;echo 1 >   /proc/sys/net/ipv4/conf/lo/arp_ignore;echo 2 >   /proc/sys/net/ipv4/conf/lo/arp_announce 

 

分别在VS RS1 RS2上

ifconfig lo:1 10.0.0.100/32

 

 

 

 

 

VS上安装ipvsadm

dnf -y install ipvsadm

 

  构建lvs负载均衡规则

ipvsadm -A -t 10.0.0.100:80 -s rr  #注意这里的10.0.0.100是VIP, -s指定算法  

ipvsadm -a -t 10.0.0.100:80  -r 10.0.0.5:80 -g # -r指定后端realserverip,一定要按照这个规则写

ipvsadm -a -t 10.0.0.100:80  -r 10.0.0.6:80 -g #一定要按照这里的模板写

 

分别在RS1-10.0.0.5S和 RS2 10.0.0.6上装httpd,并且开启

yum install httpd -y

systemctl enable --now httpd

 

 

然后在RS1 RS2上构建两者的网页

echo '10.0.0.5' >/var/www/html/index.html     #RS1上构建

echo '10.0.0.6' >/var/www/html/index.html     #RS2上构建

 

在客户端执行如下命令,

while true;do curl 10.0.0.100;sleep 1 ;done

可以看到请求成功调度到了后端的RS上,而且是按照rr轮询算法

 

posted @ 2022-06-18 14:06  xiaobotianlin  阅读(51)  评论(0编辑  收藏  举报