一、实现基于MYSQL验证的vsftpd虚拟用户访问
主机:两台,一台为FTP服务器,一台为MySQL服务器
1.配置MySQL服务,并创建相应库与表,并创建授权用户
[root@mysql ~]# yum install -y mariadb-server #安装数据库服务
[root@mysql ~]# systemctl start mariadb
[root@mysql ~]# mysql
Welcome to the MariaDB monitor. Commands end with ; or \g.
......
MariaDB [(none)]> create database vsftpd; #创建库
Query OK, 1 row affected (0.00 sec)
MariaDB [(none)]> use vsftpd;
MariaDB [vsftpd]> CREATE TABLE users ( #创建用户表,用于保存用户信息
-> id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
-> name CHAR(50) BINARY NOT NULL,
-> password CHAR(48) BINARY NOT NULL);
Query OK, 0 rows affected (0.02 sec)
MariaDB [vsftpd]> insert into users (name,password) value('ftpuser1',password('centos')); #添加FTP用户
Query OK, 1 row affected (0.00 sec)
MariaDB [vsftpd]> insert into users (name,password) value('ftpuser2',password('linux')); #添加FTP用户
Query OK, 1 row affected (0.01 sec)
MariaDB [vsftpd]> grant select on vsftpd.* to vsftpd@'192.168.25.%' identified by 'centos'; #创建授权用户
Query OK, 0 rows affected (0.00 sec)
2.在FTP服务器上安装FTP服务,并编译安装pam_mysql模块
[root@ftpserver ~]# yum install -y vsftpd #安装FTP服务
[root@ftpserver ~]# ll pam_mysql-0.7RC1.tar.gz #准备pam_mysql安装包
[root@ftpserver ~]# tar -xf pam_mysql-0.7RC1.tar.gz
[root@ftpserver ~]# cd pam_mysql-0.7RC1/
[root@ftpserver ~]# yum install -y gcc gcc-c++ pam-devel mariadb-devel #先安装相关依赖包
[root@ftpserver pam_mysql-0.7RC1]# ./configure --with-pam-mods-dir=/lib64/security/ #编译安装pam_mysql模块
[root@ftpserver pam_mysql-0.7RC1]# make && make install
3.创建pam认证文件
[root@ftpserver ~]# vim /etc/pam.d/vsftpd.mysql
auth required pam_mysql.so user=vsftpd passwd=centos host=192.168.25.31 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
account required pam_mysql.so user=vsftpd passwd=centos host=192.168.25.31 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2
4.创建FTP虚拟用户与共享目录,并修改 /etc/vsftpd/vsftpd.conf
[root@ftpserver ~]# useradd -d /data/ftproot -s /sbin/nologin vuser #创建虚拟用户
[root@ftpserver ~]# chmod 555 /data/ftproot #设置FTP目录权限
[root@ftpserver ~]# mkdir /data/ftproot/upload #创建FTP上传目录
[root@ftpserver ~]# setfacl -m u:vuser:rwx /data/ftproot/upload #设置上传目录权限
[root@ftpserver ~]# vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd.mysql #修改此项
添加以下三项
guest_enable=YES
guest_username=vuser
user_config_dir=/etc/vsftpd/vusers.d/ #独立用户配置目录
5.启动FTP服务,用数据库中的用户测试
[root@ftpserver ftproot]# systemctl start vsftpd
二、通过NFS实现服务器/www共享访问
主机:两台,一台为NFS服务器,一台为客户端
1.配置NFS服务器
[root@NFSserver ~]# mkdir /www #新建挂载目录
[root@NFSserver ~]# vim /etc/exports
/www 192.168.25.0/24(rw,root_squash) #配置挂载目录
[root@NFSserver ~]# systemctl start nfs-server #启动NFS服务
[root@NFSserver ~]# exportfs -v #查看本机的NFS共享
/www 192.168.25.0/24(sync,wdelay,hide,no_subtree_check,sec=sys,rw,secure,root_squash,no_all_squash)
[root@NFSserver ~]# touch /www/f1.txt #创建一个文件
2.客户端挂载NFS目录
[root@Client ~]# showmount -e 192.168.25.25 #查看主机的共享信息
Export list for 192.168.25.25:
/www 192.168.25.0/24
开始手动挂载
[root@Client ~]# mount -o rw,nosuid,fg,hard,intr 192.168.25.25:/www /data/
[root@Client ~]# cd /data
[root@Client data]# ls -l #可以挂载中的文件
如要实现开机挂载
则在 /etc/fstab 文件中添加一行
192.168.25.25:/www /data nfs defaults 0 0
三、配置samba共享,实现/www目录共享
主机:一台服务器端(192.168.25.25),一台客户端(192.168.25.35)
软件:samba (服务器端),cifs-utils (客户端),光盘yum源
1.服务器端安装安装samba包
[root@server ~]# yum install -y samba
2.创建samba用户和组,并创建samba共享目录
[root@server ~]# groupadd -r smbgroup #新建smbgroup组
[root@server ~]# useradd -s /sbin/nologin -G smbgroup smbuser1 #新建smbuser1用户,并加入smbgroup组中
[root@server ~]# id smbuser1
uid=1001(smbuser1) gid=1001(smbuser1) groups=1001(smbuser1),981(smbgroup)
[root@server ~]# smbpasswd -a smbuser1 #添加samba用户
New SMB password: #密码 12345
Retype new SMB password:
Added user smbuser1.
[root@server ~]# useradd -s /sbin/nologin smbuser2
[root@server ~]# smbpasswd -a smbuser2
New SMB password: #密码 54321
Retype new SMB password:
Added user smbuser2.
[root@server ~]# mkdir /www #新建共享目录
[root@server ~]# chgrp smbgroup /www #修改目录所属组
[root@server ~]# chmod 2775 /www
[root@server ~]# ls -ld /www
3.修改samba配置文件 /etc/samba/smb.conf
[root@server ~]# vim /etc/samba/smb.conf#在结尾处添加以下自定义设置
[smbshare]
path = /www
writeable = no
write list = @smbgroup
writeable = no时只有smbgroup组的用户才有写权限
4.启动samba服务
[root@server ~]# systemctl start smb nmb
5.客户端安装cifs-utils包,并挂载
[root@client ~]# yum install -y cifs-utils
[root@client ~]# mkdir /data/smbuser1 #创建挂载目录
[root@client ~]# mkdir /data/smbuser2 #创建挂载目录
四、使用rsync+inotify实现/www目录实时同步
主机:一台服务器端(192.168.25.25),一台客户端(192.168.25.35)
1.服务器端安装inotify-tools软件包(epel源)和 rsync包(光盘yum源)
[root@server ~]# yum install -y inotify-tools rsync
2.服务器端生成验证文件
[root@server ~]# echo "rsyncuser:centos" > /etc/rsync.pass
[root@server ~]# chmod 600 /etc/rsync.pass
3.服务器端准备要备份的目录
[root@server ~]# mkdir /data
4.服务器端修改rsync的配置文件
[root@server ~]# vim /etc/rsyncd.conf
uid = root
gid = root
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 = 192.168.25.0/24
[backup]
path = /data/
comment = backup
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass
5.服务器端启动rsync服务
[root@server ~]# systemctl start rsyncd
6.客户端配置密码文件
[root@client ~]# echo "12345" > /etc/rsync.pass
[root@client ~]# chmod 600 /etc/rsync.pass
7.客户端测试同步数据rsync -avz --password-file=/etc/rsync.pass /data/ rsyncuser@rsync服务器IP::/data
[root@client ~]# cd /data
[root@client data]# touch f1.txt #在客户端目录新建一个文件
[root@client data]# ll
[root@server ~]# ll /data/ #此时服务器端备份目录还没有文件
total 0
[root@client data]# rsync -avz --password-file=/etc/rsync.pass /data/ rsyncuser@192.168.25.25::backup #使用rsync进行同步
sending incremental file list
./
f1.txt
sent 104 bytes received 38 bytes 284.00 bytes/sec
total size is 0 speedup is 0.00
返回服务器端查看
[root@server ~]# ll /data/ #文件已同步过来
四、LVS调度算法总结
1.轮叫调度(Round Robin)(简称rr)
调度器通过“轮叫”调度算法将外部请求按顺序轮流分配到集群中的真实服务器上,它均等地对待每一台服务器,而不管服务器上实际的连接数和系统负载。
2.加权轮叫(Weighted Round Robin)(简称wrr)
调度器通过“加权轮叫”调度算法根据真实服务器的不同处理能力来调度访问请求。这样可以保证处理能力强的服务器能处理更多的访问流量。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
3.最少链接(Least Connections)(LC)
调度器通过“最少连接”调度算法动态地将网络请求调度到已建立的链接数最少的服务器上。如果集群系统的真实服务器具有相近的系统性能,采用“最小连接”调度算法可以较好地均衡负载。
4.加权最少链接(Weighted Least Connections)(WLC)
在集群系统中的服务器性能差异较大的情况下,调度器采用“加权最少链接”调度算法优化负载均衡性能,具有较高权值的服务器将承受较大比例的活动连接负载。调度器可以自动问询真实服务器的负载情况,并动态地调整其权值。
5.基于局部性的最少链接(Locality-Based Least Connections)(LBLC)
“基于局部性的最少链接”调度算法是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,将请求发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用“最少链接” 的原则选出一个可用的服务器,将请求发送到该服务器。
6.带复制的基于局部性最少链接(Locality-Based Least Connections with Replication)(LBLCR)
“带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标 IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按“最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器;若服务器超载,则按“最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度。
7.目标地址散列(Destination Hashing)(DH)
“目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
8.源地址散列(Source Hashing)(SH)
“源地址散列”调度算法根据请求的源IP地址,作为散列键(Hash Key)从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空。
9.最短的期望的延迟(Shortest Expected Delay Scheduling SED)(SED)
基于wlc算法。这个必须举例来说了
ABC三台机器分别权重123 ,连接数也分别是123。那么如果使用WLC算法的话一个新请求进入时它可能会分给ABC中的任意一个。使用sed算法后会进行这样一个运算
A(1+1)/1
B(1+2)/2
C(1+3)/3
根据运算结果,把连接交给C 。
10.最少队列调度(Never Queue Scheduling NQ)(NQ)
无需队列。如果有台 realserver的连接数=0就直接分配过去,不需要在进行sed运算
五、LVS的跨网络DR实现
主机:四台,一台VS服务器,二台RS服务器,一台客户端服务器
网络配置:VS服务器 DIP:192.168.25.5(eth0),RS1服务器RIP:192.168.25.15(eth0),RS2服务器RIP:192.168.25.25(eth0),VIP:192.168.25.100(lo:1),客户端服务器CIP:192.168.25.35(eth1)
软件包:keepalived,ipvsadm,httpd(光盘yum源)
1.在VS服务器上配置
[root@VS ~]# yum install -y ipvsadm
[root@VS ~]# ifconfig eth0:1 192.168.25.100/32
[root@VS ~]# ipvsadm -A -t 192.168.25.100:80 -s wrr
[root@VS ~]# ipvsadm -a -t 192.168.25.100:80 -r 192.168.25.15 -g -w 1
[root@VS ~]# ipvsadm -a -t 192.168.25.100:80 -r 192.168.25.25 -g -w 1
[root@VS ~]# ipvsadm -Ln
2.在RS1服务器上配置
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@RS1 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@RS1 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@RS1 ~]# ifconfig lo:1 192.168.25.100/32
[root@RS1 ~]# yum install -y httpd
[root@RS1 ~]# echo 192.168.25.15 RS1 > /var/www/html/index.html
[root@RS1 ~]# systemctl start httpd
3.在RS2服务器上配置
[root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
[root@RS2 ~]# echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
[root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
[root@RS2 ~]# echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
[root@RS2 ~]# ifconfig lo:1 192.168.25.100/32
[root@RS2 ~]# yum install -y httpd
[root@RS2 ~]# echo 192.168.25.25 RS2 > /var/www/html/index.html
[root@RS2 ~]# systemctl start httpd
4.在客户端服务器上测试
[root@client ~]# while true; do curl 192.168.25.100 ;sleep 1; done
192.168.25.15 RS1
192.168.25.25 RS2
192.168.25.15 RS1
192.168.25.25 RS2
192.168.25.15 RS1
浙公网安备 33010602011771号