第八周
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表示开启转发
第三步:配置访问客户端
最重要的就是网关配置
上述步骤结束后,可以测试一下网络情况,从客户端到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轮询算法