linux运维15

linux运维篇15

  • 一、实现基于MYSQL验证的vsftpd虚拟用户访问
  • 二、配置samba共享,实现/www目录共享
  • 三、使用rsync+inotify实现/www目录实时同步
  • 四、LVS调度算法总结
  • 五、LVS的跨网络DR实现

一、实现基于MYSQL验证的vsftpd虚拟用户访问

FTP服务器搭建:

数据库配置
yum install -y mariadb-server
systemctl enable --now mariadb.servicemysql  创建虚拟账户aa,bb和数据库vsftpd
CREATE DATABASE vsftpd;
USE vsftpd;
CREATE TABLE users (
id INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
name CHAR(50) BINARY NOT NULL,
password CHAR(48) BINARY NOT NULL
);
INSERT INTO users(name,password) values('aa',password('aa123456'));
INSERT INTO users(name,password) values('bb',password('bb123456'));
GRANT SELECT ON vsftpd.* TO vsftpd@'%' IDENTIFIED BY 'vsftpd'; 
FLUSH PRIVILEGES;安装认证模块
yum install -y gcc pam-devel mariadb-devel
wget https://jaist.dl.sourceforge.net/project/pam-mysql/pam-mysql/0.7RC1/pam_mysql-0.7RC1.tar.gz  --no-check-certificate
tar xf pam_mysql-0.7RC1.tar.gz
cd pam_mysql-0.7RC1
./configure --with-pam-mods-dir=/lib64/security
make installll /lib64/security/pam_mysql.*   确认模块安装成功配置PAM模块和数据库绑定认证
vi /etc/pam.d/vsftpd.mysqlauth required pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.116.130 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2account required pam_mysql.so user=vsftpd passwd=vsftpd host=192.168.116.130 db=vsftpd table=users usercolumn=name passwdcolumn=password crypt=2安装FTP服务
yum install -y vsftpd
useradd -s /sbin/nologin -d /data/ftproot -r vuser  创建系统账户vuser
mkdir -p /data/ftproot/upload
setfacl -m u:vuser:rwx /data/ftproot/upload
创建2个文件,验证登录
touch /data/ftproot/aa.txt
touch /data/ftproot/bb.txtvi /etc/vsftpd/vsftpd.conf    修改配置文件pam_service_name=/etc/pam.d/vsftpd.mysql   #原本的这个要修改为模块路径
#文件底部添加
anonymous_enable=YES
guest_enable=YES
guest_username=vusersystemctl enable --now vsftpd

客户端访问

yum install -y ftp
ftp 192.168.116.130   输入虚拟账户aa和密码,查看文件

在这里插入图片描述

二、配置samba共享,实现/www目录共享

服务器安装:

yum install -y samba
mkdir /www -p  创建共享目录
touch /www/smb1.txtuseradd -s /sbin/nologin -r smb1  创建系统账户
smbpasswd -a smb1                 将系统账户映射为smb账户
pdbedit -L                        查看账户生成
vi /etc/samba/smb.conf            修改配置
[share1]path=/wwwwritable=no               #只允许smb1进行写操作write list=smb1           #设置允许账户setfacl -m u:smb1:rwx /www
systemctl start smb

客户端访问

yum install -y samba-client
smbclient //192.168.116.130/share1 -U smb1   访问共享目录
put anaconda-ks.cfg                          上传测试

在这里插入图片描述

三、使用rsync+inotify实现/www目录实时同步

备份服务器配置:

yum install -y rsyncvi /etc/rsyncd.conf             删除文件内容改为下面
uid = root
gid = root
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
[backup]
path = /data/backup/
comment = backup dir
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pasmkdir /data/backup -p                         创建备份目录
echo "rsyncuser:rsyncuser" > /etc/rsync.pas   创建账户认证文件
chmod 600 /etc/rsync.pas
systemctl start rsyncd  
ss -tnl                                       确认873端口打开

在这里插入图片描述
主服务器配置(需要备份的服务器)

初始化环境
cd /etc/yum.repos.d/
wget http://mirrors.aliyun.com/repo/Centos-7.repo
wget http://mirrors.aliyun.com/repo/epel-7.repo
systemctl stop firewalld
systemctl disable firewalld
sed -i 's/SELINUX=enforcing$/SELINUX=disabled/g' /etc/selinux/config
setenforce 0配置阿里源才能下载这个
yum install -y inotify-tools rsync vi /etc/sysctl.conf          修改内核参数fs.inotify.max_queued_events=100000
fs.inotify.max_user_watches=100000sysctl -pecho "rsyncuser" > /etc/rsync.pas   创建密码文件,只要密码,不要写账户
chmod 600 /etc/rsync.pas
mkdir /www -p    创建数据目录
touch /www/rsync.txt

在主服务器上手动测试上传

rsync -az  --delete --password-file=/etc/rsync.pas /www/ rsyncuser@192.168.116.130::backup 

在这里插入图片描述
备份服务器查看

ls /data/backup/

在这里插入图片描述
在主服务器创建脚本后台运行,这样只要主服务器的/www下的文件发生变化就会自动更新到备份服务器

vi rsync_backup.sh
#!/bin/bash 
SRC='/www/'
DEST='rsyncuser@192.168.116.130::backup'
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;doFILEPATH=${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/file_backup.log
done前台运行脚本
bash rsync_backup.sh 

备份服务器开启实时监控目录

watch -n0.5 ls -l /data/backup/ 

测试图
在这里插入图片描述
最后在主服务器上,设置脚本开机运行

vi /etc/rc.d/rc.local 
/usr/bin/bash /root/rsync_backup.sh &chmod u+x /etc/rc.d/rc.local

四、LVS调度算法总结

调度工具:ipvsadm
安装方式:yum install -y ipvsadm

一 静态算法

  1. rr:轮询,轮流调度后台数据,假如有2台web,那就是一台一次,轮流进行

  2. wrr:权重轮询,根据设置的权重值进行访问,权重大的访问较多次

  3. dh:请求绑定轮询:判断发起的协议类型或其他标准是不是同一种类型的请求,是的话全部调度到同台web服务器

  4. sh:客户端绑定轮询,根据客户端的cookie确认以前连接后台web服务器是哪台,有的话根据cookie绑定上次连接的web服务器。没有就随机连接。

二 动态算法:

  1. lc:最少连接轮询:通过查看哪个web服务器的连接量少,就提升web服务器的访问量

  2. wlc:加权最少连接轮询:通过访问量和权重进行计算,优先把访问量给到少量访问的服务器上。默认算法

  3. sed:最短期望延迟轮询,通过(活动数+1)*256/权重进行计算,将连接数发到计算值为最小的服务器上

  4. nq:最短期望延迟不排队轮询,通过(活动数+1)*256/权重进行计算,将连接数发到计算值为最小的服务器上,但是如果此时有设备是空闲状态,会直接把请求发到这台服务器上,而不会再把请求发到计算值为最小的服务器上。

  5. lblc:dh和lc加强版,根据客户端请求的是不是同一类型和连接数量进行判断。

  6. lblcr:dh和lc加强版,根据客户端请求的是不是同一类型和连接数量进行判断,多了一个复制缓存功能,如果请求的设备没有数据,那么可以从其他服务器缓存过来。

术语:
VS:调度服务器,一般指部署ipvsadm软件所在的服务器
RS:代理服务器,一般指部署nginx,haproxy软件所在的服务器
CIP:客户端IP,一般指普通用户访问网站或APP所使用的IP
VIP:调度服务器使用的对外IP,就是客户端访问网站时访问的IP
DIP:调度服务器使用对内的IP,也就是调度器跟代理服务器通信所使用的IP
RIP:真实IP,也就是实际网站或APP后台服务器的真实IP地址

五、LVS的跨网络DR实现

LVS-DR:修改MAC地址进行通信

原理:
在这里插入图片描述
官网介绍:LVS-DR

LVS-DR实现过程:
请求过程:CIP-路由网卡1-路由网卡2-调度器VIP-RIP
接收过程:RIP-VIP-路由网卡2-路由网卡1-CIP

1.  客户端(CIP)向路由服务器发起到VIP的请求
2.  路由器第一个网卡接收客户端请求,内核映射请求给路由器的第二个网卡
3.  路由器第二个网卡转发数据给调度器的虚拟(VIP)网卡
4.  调度器请求的数据包中的MAC地址,把数据转发给web1虚拟(VIP)网卡
5.  web1虚拟(VIP)网卡收到后,把数据直接返回给路由器的第二个网卡,不再经过调度器
6.  路由器的第二个网卡收到数据后,内核映射回给路由器第一个网卡
7.  路由器第一个网卡回复数据给客户端

LVS-DR特性:

  1. ipvsadm调度器和其他web服务器都要添加同一个对外(VIP)地址
  2. web服务器都要修改arp_ignore和arp_announce参数
  3. ipvsadm调度服务器DIP和web服务器RIP必须是要在同一个直连网络,web服务器的网关不能是调度器的IP,需要指定为路由服务服务器的网关
  4. 路由器服务器可以是最少是双网络,可以是多网络,只要和ipvsadm调度器服务器和web服务器有路由即可。
  5. 不支持端口映射,端口不能修改
  6. 调度器只需要修改请求报文,性能相对较好

arp_ignore和arp_announce解析:
因为配置同一个VIP,就会有IP冲突问题,所以web服务器就要修改内核参数。
限制响应级别:arp_ignore

0:默认值,表示可使用本地任意接口上配置的任意地址进行响应
1:仅在请求的目标IP配置在本地主机的接收到请求报文的接口上时,才给予响应
修改方式:
echo 1 >   /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 >   /proc/sys/net/ipv4/conf/lo/arp_ignore

限制通告级别:arp_announce

0:默认值,把本机所有接口的所有信息向每个接口的网络进行通告
1:尽量避免将接口信息向非直接连接网络进行通告
2:必须避免将接口信息向非本网络进行通告
修改方式:
echo 2 >   /proc/sys/net/ipv4/conf/all/arp_announce 
echo 2 >   /proc/sys/net/ipv4/conf/lo/arp_announce

抓包分析:

根据下面的LVS-DR模型部署后

客户端IP:192.168.116.148,MAC:00:0c:29:df:55:8c
路由服务器的网卡1-ens33IP:192.168.116.145,MAC:00:0c:29:16:a1:b9
路由服务器的网卡2-ens34IP:10.0.0.1,MAC:00:0c:29:16:a1:c3
调度服务器的网卡IP:10.0.0.254,MAC:00:0c:29:2e:4a:3b
web1服务器的网卡IP:10.0.0.2,MAC:00:0c:29:ef:c9:b1

客户端分析:
curl 10.0.0.100 发起请求
00:0c:29:df:55:8c 为请求的MAC地址
在这里插入图片描述
路由器测试
ens33网卡抓包分析

在路由器上抓取ens33的网卡,查看来自客户端(192.168.116.148 )的请求
ip a
网卡ens33的MAC:00:0c:29:16:a1:b9             和客户端同网段,可以接收客户端请求
网卡ens34的MAC:00:0c:29:16:a1:c3             和web同网段,可以接收web返回的数据

在这里插入图片描述
tcpdump -i ens33 -nn -e host 10.0.0.100 抓取客户端到10.0.0.100的请求

通过第一个数据包这个可看到实际是客户端的MAC访问到路由器的ens33的MAC,端口和IP不变
00:0c:29:df:55:8c > 00:0c:29:16:a1:b9, ethertype IPv4 (0x0800), length 74: 192.168.116.148.53164 > 10.0.0.100.80
通过第二个数据包这个可看到路由器的ens33网卡的MAC回复客户端的MAC,端口和IP不变
00:0c:29:16:a1:b9 > 00:0c:29:df:55:8c, ethertype IPv4 (0x0800), length 74: 10.0.0.100.80 > 192.168.116.148.53164

所以可以得到客户端一直都是和路由器的ens33网卡进行通信
在这里插入图片描述
调度器查看
ip a
调度器的ens33的MAC地址:00:0c:29:2e:4a:3b
在这里插入图片描述

抓取源为路由器ens34网卡到调度器的数据
tcpdump -i ens33 ether src 00:0c:29:16:a1:c3 -nn -e  通过第一个数据包可看到IP和端口不变,还是客户端请求10.0.0.100
可以看到调度器接收到了路由器转发过来的请求,然后调度器修改了目标MAC地址,把MAC地址改为了WEB1的MAC
00:0c:29:16:a1:c3             路由器的ens34的MAC地址
00:0c:29:ef:c9:b1             web1的真实MAC地址00:0c:29:16:a1:c3 > 00:0c:29:ef:c9:b1, ethertype IPv4 (0x0800), length 74: 192.168.116.148.53164 > 10.0.0.100.80
时间点为17:04:58.727162

在这里插入图片描述
路由器ens34网卡抓包分析

原本路由器2个网卡IP
ip a
网卡ens33的MAC:00:0c:29:16:a1:b9          和客户端同网段,可以接收客户端请求
网卡ens34的MAC:00:0c:29:16:a1:c3          和web同网段,可以接收web返回的数据

在这里插入图片描述

抓取来自源web1网卡和路由器的ens34的数据
tcpdump -i ens34 -nn -e ether src 00:0c:29:ef:c9:b1   通过第一个数据包可以看到web1返回数据给路由器的ens34网卡
00:0c:29:ef:c9:b1                  web1的MAC地址
00:0c:29:16:a1:c3                  路由器的ens34的MAC地址00:0c:29:ef:c9:b1 > 00:0c:29:16:a1:c3, ethertype IPv4 (0x0800), length 74: 10.0.0.100.80 > 192.168.116.148.53164

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/1383157.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

linux运维19

linux运维篇19 一、haproxy https实现二、总结tomcat的核心组件以及根目录结构三、tomcat实现多虚拟主机四、nginx实现后端tomcat的负载均衡调度五、简述memcached的工作原理 一、haproxy https实现 路由拓扑 后台web服务器搭建 LAMP架构看这个:LAMP yum install…

收集的 Linux VPS 在线重装系统脚本

因为 VPS 上预装的操作系统我并不习惯,所以打算重装一个。有的 VPS 服务商提供了较多种类的系统选择,有的却没有。如果你发现你希望重装的系统服务商没有提供,可以考虑自己安装。 本文内容 重装脚本 - 来自萌咖CentOS -> Debian 重装脚本 …

【运维】——服务器装Linux系统

一、用软碟通刻录系统光盘 1打开软碟通软件,打开文件-------选择Linux系统 2选择启动----写入硬盘映像 3开始写入硬盘映像,静等进度条走完即可。 二、开始安装Linux系统 1给主机插上刚刚刻录好的系统光盘,选择启动项 2设置信息:…

Linux入门---环境搭建(腾讯云服务器)、XShell远程登陆Linux

Linux环境搭建和远程登陆Linux Linux环境搭建XShell远程登陆Linux Linux环境搭建 主要有三种方式: 1.直接安装在物理机上,但是由于Linux桌面使用起来非常不友好,不推荐。 2.使用虚拟机软件,将Linux搭建在虚拟机上,但是…

Linux系统运维1 运维 项目研发 网站 服务器 计算机基础 Linux操作系统

运维的基本概念 运维行业前景 企业运作模式 四大部门 项目研发流程 职责描述&#xff1a; 运维的作用&#xff1a; 网站的相关概念 网站运行流程&#xff1a; IP<–>域名 重要概念&#xff1a; 服务器图片&#xff1a; 服务器&#xff1a;为用户提供服务的机器&…

linux运维14

linux运维篇14 一、简述CGI与FASTCGI区别二、 编译安装基于fastcgi模式的多虚拟主机的wordpress和discuz的LAMP架构三、通过loganalyzer展示数据库中的日志&#xff08;cgi模式&#xff09; 一、简述CGI与FASTCGI区别 CGI模式&#xff1a;当用户访问网站的动态资源时&#xff…

【从零开始学习JAVA | 第四十五篇】动态代理

目录 前言&#xff1a; 动态代理&#xff1a; 动态代理实现步骤&#xff1a; 动态代理的应用场景&#xff1a; 总结&#xff1a; 前言&#xff1a; 动态代理作为一种强大的编程技术&#xff0c;不仅为我们提供了灵活性和可扩展性&#xff0c;还为软件开发和系统设计带来了…

布隆过滤器在缓存系统中的实践

一. 背景 在业务开发中&#xff0c;在并发量很高的情况下&#xff0c;通常会使用缓存对系统查询性能进行优化&#xff0c;在缓存命中率很高的情况下&#xff0c;缓存的使用能够大幅提升系统查询性能。但是在缓存命中率非常低场景下&#xff0c;如果采用传统缓存读取模式&#…

Redisson_布隆过滤器

应用场景 去重 诞生背景 Java应用一般通过JDK自身提供的HashSet去重&#xff0c;通过contains()方法判断当前元素是否存在于Set中。该方式要求在调用contains()前&#xff0c;已经将数据列表加载到内存中&#xff08;即该方法基于内存存储实现判断功能&#xff09;。 缺点: 1.满…

【布隆过滤器】

我是&#x1f31f;廖志伟&#x1f31f;&#xff0c;一名&#x1f315;Java开发工程师&#x1f315;、&#x1f4dd;Java领域优质创作者&#x1f4dd;、&#x1f389;CSDN博客专家&#x1f389;、&#x1f339;幕后大佬社区创始人&#x1f339;。拥有多年一线研发经验&#xff0…

xmind用例数据上传至禅道

xmind格式参考&#xff0c;只需要在一级子主题填写对应用例模块ID&#xff0c;其余格式随意即可生成用例并直接上传到禅道&#xff1a; 代码里需填写禅道对应登录账号及用例所属产品 import requests import json import re import hashlib import pprint import threading fr…

认识相机

认识相机 在Threejs中相机的表示是THREE.Camera&#xff0c;它是相机的抽象基类&#xff0c;其子类有两种相机&#xff0c;分别是正投影相机THREE.OrthographicCamera和透视投影相机THREE.PerspectiveCamera。类图如下所示&#xff1a; 透视投影相机&#xff08;PerspectiveCam…

【项目实践】海康威视工业相机SDK开发小白版入门教程(VS2015+OpenCV4.5.1)

本文目录 前言怎么查找资料&#xff1f;数据手册例程 项目开发VS版本与OpenCV版本选择VS配置OpenCVVS添加MVS安装目录下的头文件和库VS项目开发 编程问题记录相机数据如何转换为OpenCV的Mat类型&#xff1f;函数不能修改全局指针变量&#xff1f;OpenCV运行报错“有未经处理的异…

Azure Kinect sdk 入门,简单使用深度相机

首先要安装azure Kinect dk传感器和人体跟踪的软件 先安装传感器&#xff1a;Azure-Kinect-Sensor-SDK/usage.md at develop microsoft/Azure-Kinect-Sensor-SDK GitHub 在这个网址里下载&#xff0c; 点击红笔画出来的地方&#xff0c;下载安装&#xff0c;记住安装路径&a…

入门级数码相机

为了满足不同层次顾客的购买要求&#xff0c;小编今天给大家交上一篇家用DC完全导购。从200万像素到800万像中间&#xff0c;分别选取了几款各级别中值得推荐的DC为大家推荐。在这里先给朋友们提一下目前数码相机市场相素与价位之间的简单联系。 目前&#xff0c;200万像素的数…

【计算机视觉-从入门到精通系列】 第二章 相机模型

2.1 针孔模型 计算机视觉是一门研究如何让计算机“看”世界的学科。人要看到世界需要眼睛&#xff0c;计算机要看到世界同样也需要“眼睛”&#xff0c;计算机的“眼睛”主要就是相机。实际应用中&#xff0c;相机的种类纷繁复杂&#xff0c;包括手机和平板电脑的相机&#xff…

5分钟入门Cinemachine智能相机系统

摘要&#xff1a;相机是Unity世界的眼睛&#xff0c;一个智能相机更是能帮咱们节省大把的时间和精力。Cinemachine现在已经大量应用到各种项目中&#xff0c;如果你还没有用过Cinemachine&#xff0c;墙裂建议你来体验一下。 你好&#xff0c;我是跟着大智学Unity的萌新&#x…

立体视觉入门指南(1):坐标系与相机参数

亲爱的同学们&#xff0c;我们的世界是3D世界&#xff0c;我们的双眼能够观测三维信息&#xff0c;帮助我们感知距离&#xff0c;导航避障&#xff0c;从而翱翔于天地之间。而当今世界是智能化的世界&#xff0c;我们的科学家们探索各种机器智能技术&#xff0c;让机器能够拥有…

camera学习入门指南

等待补充。 1.背景介绍 近年来&#xff0c;随着消费电子领域市场的快速增长&#xff0c;如安防、图像等领域&#xff0c;camera市场得到了快速发展。智能手机这几年以拍照作为主打卖点&#xff0c;带动了camera&#xff08;CCM&#xff09;出货。 具体可以看电子行业分析或者券…

机器视觉——入门基础(三)——相机镜头选型

目录 相机选型 分辨率、快门、帧率、色彩、靶面、接口 镜头选型 分辨率、靶面、焦距、接口、光圈畸变工作距离 常用计算示例 相机选型 分辨率、快门、帧率、色彩、靶面、接口 镜头选型 分辨率、靶面、焦距、接口、光圈畸变工作距离 常用计算示例 1. 面阵相机和镜头选型 已…