Linux集群架构/服务软件说明/优化ssh远程/架构前优化/rsync知识/搭建备份服务

发布于:2024-05-07 ⋅ 阅读:(23) ⋅ 点赞:(0)

什么是集群?

简单地说,集群就是一堆机器做同一件事。
例如:www.jd.com提供卖东西服务这就是一件事,可能是几千台服务器,在背后运转支撑这个网站。
www.baidu.com看着就是一个搜索框,背后可能是上万台服务器。

为什么企业要用集群?

a.数据安全(数据不丢,数据不泄露)。
b.7*24服务,需要多台机器同时工作,互为实时备份。
c.高并发访问,需要多台服务器同时提供服务。

集群特点

a.数据量大、用户多
b.7*24持续服务
c.高并发并发
d.用户分布广泛,网络情况复杂。

集群架构是什么样子的?

在这里插入图片描述

集群内服务软件说明

DNS服务:阿里云DNS(https://www.dnspod.cn/)、腾讯DNS、硬件F5、bind、powerDNS

CDN服务:阿里CDN,腾讯CDN,网宿CDN、CHINACACHE、七牛(squid/nginx/varnish)+智能DNS

防火墙服务:硬件防火墙:金盾、思科、华为,iptables,firewalld

负载均衡:nginx(L4和L7),lvs(L4),Haproxy(L4和L7)

高可用:keepalved,heartbeat

静态Web服务:Nginx,Apache,IIS(图片、文件、html)

动态Web服务:php语言(php-fpm),java(tomcat,resin,weblogic),Python(Python)

数据库服务:MySQL(mariadb),oracle,PostgreSQL(关系型数据库)

非关系数据库:Mongodb,Redis,hbase(大数据相关)

存储服务:NFS,MFS,FASTDFS,CEPH,HADOOP
复制备份:rsync,sersync,drbd(block)
定时备份(crond+rsync),实时备份(rsync+sersnc)

ELFK分布式日志集群(ELK)
Filebeat数据收集
Elasticsearch数据存储
Logstash数据处理
kibana分析和展示
Kafaka消息队列
Zookeeper集群
Hadoop大数据存储

VPN:服务:硬件VPN,openvpn,pptp
跳板机:硬件跳板机,jumpserver(可视化、记录)

批量管理:ansible,saltstak,puppet,cfengine,ssh(key),xshell(SecurCRT),expect,ssh-pass
监控服务:nagios,Zabbix,Prometheus(普罗米修斯),grafana
zabbix+Prometheus+grafana
Sonar系列之SonarQube

监控:

底层基础架构环境
KVM虚拟化服务
Openstack云计算服务
Docker容器服务
Kubernetes(K8S)集群服务
阿里云/腾讯云公有云实战
Kubernetes(K8S)集群服务

集群架构基础优化:
1、添加一个普通用户wulin。
[root@wulin ~]# useradd wulin
[root@wulin ~]# id wulin
uid=500(wulin) gid=500(wulin) groups=500(wulin)

2、加到sudo管理,wulin就相当于管理员
[root@wulin ~]# visudo
[root@wulin ~]# grep -w wulin /etc/sudoers
wulin ALL=(ALL) NOPASSWD: ALL

特殊:
安装系统最后一步,勾选后系统将wulin加为了管理员设置方法: [root@wulin ~]# id wulin uid=1000(wulin) gid=1000(wulin) 组=1000(wulin),10(wheel)

[root@wulin ~]# grep -w wheel /etc/sudoers

Allows people in group wheel to run all commands
%wheel ALL=(ALL) ALL
%wheel ALL=(ALL) NOPASSWD: ALL

3.禁止root远程登录,改用wulin用户登录。
vi /etc/ssh/sshd_config 进行调整
重新配置Xshell连接
38 #PermitRootLogin yes
改为:
PermitRootLogin no
在这里插入图片描述

#优化SSH远程连接效率:
PermitEmptyPasswords no
UseDNS no
GSSAPIAuthentication no

保存后重启sshd
[root@wulin ~]# systemctl restart sshd

测试ssh root连接
[root@wulin ~]# ssh 192.168.247.128
Permission denied 确认已经无法通过root远程登录。
以后都是通过登录wulin,如有必要通过sudo su -切换。
在这里插入图片描述

4.基础优化操作项:更新yum源信息
#第一个:就近使用yum源地址,安装软件更快。
curl -s -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

#第二个:安装RHEL/CentOS官方源不提供的软件包
curl -s -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

5.安装常用软件
#CentOS6和CentOS7都要安装的企业运维常用基础工具包
yum install tree nmap dos2unix lrzsz nc lsof wget tcpdump htop iftop iotop sysstat nethogs -y

#CentOS7要安装的企业运维常用基础工具包
yum install psmisc net-tools bash-completion vim-enhanced ntpdate -y

6.安全优化
1.关闭selinux
sed -i ‘s#SELINUX=.*#SELINUX=disabled#g’ /etc/selinux/config

sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/’ /etc/selinux/config

grep SELINUX=disabled /etc/selinux/config
在这里插入图片描述

setenforce 0
getenforce

2.暂时关闭firewalld防火墙服务
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld|grep inactive

7.基础优化操作项:设置普通用户提权操作(可选优化)
提权wulin可以利用sudo
useradd wulin
echo 123|passwd --stdin wulin
\cp /etc/sudoers /etc/sudoers.ori
echo "wulin ALL=(ALL) NOPASSWD: ALL " >>/etc/sudoers
tail -1 /etc/sudoers
visudo -c

手工新添加管理员(老大)
[root@wulin ~]# useradd wulincas -G wheel
[root@wulin ~]# id wulincas
uid=1001(wulincas) gid=1001(wulincas) 组=1001(wulincas),10(wheel)

[root@wulin ~]# echo 12345|passwd --stdin wulincas
[root@wulin ~]# su - wulincas
[wulincas@wulin ~]$ sudo su -
在这里插入图片描述

8.设置系统中文UTF8字符集
[root@wulin ~]# cat /etc/locale.conf
LANG=“en_US.UTF-8”
修改命令如下:
方法1:
cp /etc/locale.conf /etc/locale.conf.ori
echo ‘LANG=“zh_CN.UTF-8”’ >/etc/locale.conf
source /etc/locale.conf
echo $LANG

方法2:
cp /etc/locale.conf /etc/locale.conf.ori
localectl set-locale LANG=“zh_CN.UTF-8”
cat /etc/locale.conf

9.基础优化操作项:时间同步设置

设置系统时间同步
yum install ntpdate -y
/usr/sbin/ntpdate ntp3.aliyun.com
在这里插入图片描述

echo ‘#crond-id-001:time sync by wulin’ >>/var/spool/cron/root
echo “*/5 * * * * /usr/sbin/ntpdate ntp3.aliyun.com >/dev/null 2>&1”>>/var/spool/cron/root
crontab -l

10.基础优化操作项:提升命令行操作安全性(可选优化)
提升命令行安全(可选配置)
#echo ‘export TMOUT=300’ >>/etc/profile
#echo ‘export HISTSIZE=5’ >>/etc/profile
#echo ‘export HISTFILESIZE=5’ >>/etc/profile
tail -3 /etc/profile
. /etc/profile

11.基础优化操作项:加大文件描述符

实例演示:加大文件描述
echo ‘* - nofile 65535’ >>/etc/security/limits.conf
tail -1 /etc/security/limits.conf
ulimit -SHn 65535
ulimit -n #<==命令方式查看配置结果

12.基础优化操作项:优化系统内核
cat >>/etc/sysctl.conf<<EOF
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_keepalive_time = 600
net.ipv4.ip_local_port_range = 4000 65000
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.tcp_max_tw_buckets = 36000
net.ipv4.route.gc_timeout = 100
net.ipv4.tcp_syn_retries = 1
net.ipv4.tcp_synack_retries = 1
net.core.somaxconn = 16384
net.core.netdev_max_backlog = 16384
net.ipv4.tcp_max_orphans = 16384
EOF
#以下参数是对iptables防火墙的优化,防火墙不开会提示,可以忽略不理。
net.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_max = 25000000
net.netfilter.nf_conntrack_tcp_timeout_established = 180
net.netfilter.nf_conntrack_tcp_timeout_time_wait = 120
net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60
net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120

##NFS共享存储优化
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.wmem_max = 16777216
net.core.rmem_max = 16777216
EOF
sysctl -p

13.扩展优化操作项-修改yum.conf文件配置信息
保留yum安装的软件包
将/etc/yum.conf中的keepcache=0改为keepcache=1,为日后一键安装网站集群留好rpm及依赖工具包。
sed -i.bak ‘s#keepcache=0#keepcache=1#gp’ /etc/yum.conf

  1. 锁定关键系统文件如/etc/passwd、/etc/shadow、/etc/group、/etc/gshadow、/etc/inittab,
    处理以上内容后把chattr、lsattr改名为wulin,转移走,这样就安全多了。

chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
检查
lsattr /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
mv chattr wulin
mv lsattr wulincas

这样添加用户不方便,我们可以写个脚本

[root@wulin bin]# cat lock_wulin.sh
wulin -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
useradd $1
wulin +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab

以后添加用户方法:
[root@wuliny bin]# lock_oldboy.sh wulings
[root@wulin bin]# grep -w lwulings /etc/passwd
wulings: x:1002:1002::/home/wulings:/bin/bash
练习不动。

  1. 清空/etc/issue、/etc/issue.net,去除系统及内核版本登录前的屏幕显示。

/etc/issue
/etc/issue.net

  1. 清除多余的系统虚拟用户账号(可选)。
    清楚用#注释即可

  2. 为grub引导菜单加密码(自学)。
    [root@wulin bin]# grub2-setpassword
    Enter password:
    Confirm password:
    [root@wulin bin]# cat /boot/grub2/user.cfg
    GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.7EB8A7BD86D5492EC52B8824EEBE8D80AAE2BC613EAD567BFDF49AD5A0C37E28FDCE2AE96D10898D4C0566135443CC65CC603F688641A48F64F1252400C33A71.C186128749F9EE11DD40B0CBA39212ECED8A848A43C66210688C50724E9163CB9C7A438D334A751D51069BE1009EA1631D627AB90FE4C7D87F6BA87A43192F20

  3. 禁止主机被ping(内核参数)。(防火墙也可以禁ping)
    net.ipv4.icmp_echo_ignore_all = 1

  4. 打补丁并升级有已知漏洞的软件。
    yum update -y #(生产上线后不要操作)

20.精简开机自启动服务
systemctl list-unit-files |grep enable|egrep -v “sshd.service|crond.service|sysstat|rsyslog|^NetworkManager.service|irqbalance.service”|awk ‘{print “systemctl disable”,$1}’|bash
systemctl list-unit-files |grep enable

保留服务:
sshd|crond|sysstat|rsyslog|NetworkManager|irqbalance
[root@wulin ~]# systemctl list-unit-files |grep enable
autovt@.service enabled
crond.service enabled
getty@.service enabled
irqbalance.service enabled
NetworkManager.service enabled
rsyslog.service enabled
sshd.service enabled
sysstat.service enabled

[root@wulin scripts]# systemctl stop postfix
检查端口:
[root@wulin scripts]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 2093/sshd
tcp6 0 0 :::22 ::😗 LISTEN 2093/sshd

企业生产最小化原则:
1、安装软件包最小化。
2、用户权限最小化。
3、目录文件权限最小化。
4、自启动服务最小化。
5、服务运行用户权限最小化。

21.扩展优化操作项-优化系统提示符(根据个人喜好可选)
有时输入命令或查询信息时,会刷屏输出很多信息,此时会出现比较尴尬的局面,不知输出的信息是从2哪看起,可能正常都应该从输入命令后的信息进行看起,但如果刷屏好多页,如何快速定位输入命令的命令行呢,因此如果有颜色进行区分,就能回滚屏幕进行快速定位了
echo “PS1=’[\e[32;1m][\u@\h \W]\$ [\e[0m]’” >>/etc/profile
source /etc/profile

说明:定义ls命令的长格式显示,是输出信息格列完全对齐显示;不解释,强迫症运维都懂的
echo “alias ll=‘ls -l --color=auto --time-style=long-iso’” >>/etc/profile
source /etc/profile

22.扩展优化操作项-自动快速配置改主机名和IP地址:
[root@wulin scripts]# cat net.sh
#!/bin/sh
if [ $# -ne 2 ];then
echo “/bin/sh $0 hostname PartIP”
exit 1
fi
hostnamectl set-hostname $1 #第一个参数
sed -i “/IPADDR/s#128#$2#g” /etc/sysconfig/network-scripts/ifcfg-eth0 #<==模板机IP最后8位默认是200。
sed -i “/IPADDR/s#128#$2#g” /etc/sysconfig/network-scripts/ifcfg-eth1
systemctl restart network
#check
hostname
ifconfig eth33
ifconfig eth34
exit

#sh net.sh backup 41

基础优化:
1、规范目录
路径规划:
/server/scripts 服务器本地存放脚本程序的目录
/server/tools 服务器本地存放软件安装包的目录
/application/ 软件名 服务器本地软件安装的根目录,软件名不带版本号,例如:
/application/nginx,/application/mysql
/application/nginx/html Web服务器站点目录(bbs,blog,www,edu)
/application/nginx/logs Web服务器日志{bbs|blog|www}_access.log
/backup 服务器本地数据备份目录,也是备份服务器Rsync的备份目录
/data NFS共享存储共享文件目录

mkdir -p /server/tools
mkdir -p /server/scripts

2.规划集群服务器配置
服务器说明 ens33外网IP(NAT) ens36内网IP(NAT) 主机名称规划
A1-负载服务器01 192.168.28.5/24 172.16.1.5/16 lb01
A2-负载服务器02 192.168.28.6/24 172.16.1.6/16 lb02
B1-web服务器1 192.168.28.7/24 172.16.1.7/16 web01
B2-web服务器2 192.168.28.8/24 172.16.1.8/16 web02
SB1-web服务器1 192.168.28.9/24 172.16.1.9/16 sweb01
SB2-web服务器2 192.168.28.10/24 172.16.1.10/16 sweb02
C1-NFS存储服务器 192.168.28.31/24 172.16.1.31/16 nfs01
C2-rsync备份服务器 192.168.28.41/24 172.16.1.41/16 backup
C3-mysql数据库服务器 192.168.28.51/24 172.16.1.51/16 db01
X-管理服务器 192.168.28.61/24 172.16.1.61/16 m01

3、配置所有主机域名解析
cat >/etc/hosts<<EOF
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 sweb01
172.16.1.10 sweb02
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01
EOF

[root@wulin scripts]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
172.16.1.5 lb01
172.16.1.6 lb02
172.16.1.7 web01
172.16.1.8 web02
172.16.1.9 sweb01
172.16.1.10 sweb02
172.16.1.31 nfs01
172.16.1.41 backup
172.16.1.51 db01 db01.etiantian.org
172.16.1.61 m01
[root@wulin scripts]# ping lb01
PING lb01 (172.16.1.5) 56(84) bytes of data.
在这里插入图片描述

[root@wulin bin]# systemctl stop postfix

检查端口:
[root@wulin ~]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7072/sshd
tcp6 0 0 :::22 ::😗 LISTEN 7072/sshd

4.集群架构系统基础环境准备
1.安装全新Centos7.6系统(VM环境),修改网卡为eth33及eth36命名模式,并添加两块网卡。
2.第一块网卡eth33配置为NAT模式[模拟公网环境],网段为192.168.0.0网段。
3.第二块网卡ens36配置为LAN区段模式[模拟局域环境],网段为172.16.1.0网段。
注意:此网段为内网网段,因此,无须配置默认网关和DNS

6.克隆三台:
B1-web服务器1 192.168.28.7/24 172.16.1.7/16 web01
C1-NFS存储服务器 192.168.28.31/24 172.16.1.31/16 nfs01
C2-rsync备份服务器 192.168.28.41/24 172.16.1.41/16 backup

rsync复制软件应用及实践

什么是rsync?

Rsync英文全称为Remote sync hronization,缩写rsync是开源,高速的,可实现本地及远程,全量以及增量的数据复制(拷贝)工具。

官方文档:http://www.samba.org/ftp/rsync/rsync.html

什么是全量和增量?

全量复制:每次完整拷贝
[root@wulin ~]# cp -a /etc/ /tmp/
[root@wulin ~]# touch /etvc/wulin.txt
[root@wulin ~]#\cp -a /etc/ /tmp/

增量复制:只拷贝变化的部分
[root@wulin ~]# rsync -avz /etc /tmp/
sent 10,667,258 bytes received 36,611 bytes 7,135,912.67 bytes/sec
etc/
etc/wulin.txt #只复制wulin.txt

rsync首次全量,第二次就增量了

为什么要用rsync?

  1. 工作中需要定时、实时数据备份
  2. 本地服务器目录,不同机器
  3. 不同机房之间的数据备份,都可以用到rsync

生产案例:企业yum源与官方数据源之间的数据传输就使用rsync

使用rsync同步Centos yum源
rsync -av rsync://mirrors.ustc.edu.cn/centos/7/os/x86_64/ /var/ftp/centos7/x86_64/repodata/os

rsync -av rsync://mirrors.ustc.edu.cn/centos/7/extras/x86_64/ /var/ftp/centos7/x86_64/repodata/extras/

rsync -av rsync://mirrors.ustc.edu.cn/centos/7/updates/x86_64/ /var/ftp/centos7/x86_64/repodata/updates/

同步epel源:
rsync -avz rsync://rsync.mirrors.ustc.edu.cn/repo/centos/ /var/ftp/centos7/x86_64/repodata/epel

远程复制测试:
rsync -avz rsync://rsync.mirrors.ustc.edu.cn/repo/centos/ /var/ftp/centos7/x86_64/repodata/epel/

rsync功能特性

  • 支持拷贝普通文件与特殊文件,如软链接文件,设备文件
  • 支持排除指定文件或目录同步的功能,相当于打包命令tar的排除功能
  • 可以做到保持源文件或目录权限,时间,软硬链接,属主,组等所有属性均不进行改变
  • 可实现增量复制,既只复制发生变化的数据,因此传输数据效率很高
  • 可以使用rcp,rsh,shh等方式来配合进行隧道加密传输文件(rsync本身不对数据进行加密)
  • 可以通过soket(进程方式)传输文件和数据(服务端和客户端)
  • 支持匿名方式或认证(无需系统用户)进程模式传输,安全的进行数据备份及镜像

增量复制原理

使用quick check算法,只对增量的部分复制,根据大小属性变化进行复制
Rsync使用“快速检查“算法(默认情况下)查找需要传输的文件,该算法查找大小或上次修改时间已更改的文件。
当快速检查表明不需要更新文件的数据的时候,其他保留属性的任何更改(根据选项要求)都会直接在目标文件上进行

https://coolshell.cn/articles/7425.html

版本:
2.x版本比对差异后复制,3.x一边比对一边复制

rsync三种工作模式介绍
Local:
rsync [OPTION…] SRC… [DEST]
Access via remote shell:
Pull:
rsync.[OPTION…] USER@HOST:SRC…[DEST]
Push:
rsync:[OPTON…] SRC… [USER@]HOST:DEST

Access via remote daemon:
Pull:
rsync [OPTION…] [USER@]HOST::SRC… [DEST]
RSYNC [OPTION…] rsync:/[USER@]HOST[:PORT]/SRC…[DEST]
Push:
rsync [OPTION…] SRC… [USER@]HOST::DEST
rsync [OPTION…] SRC… rsync://[USER@]HOST [:PORT]/DEST)

第一种模式:
rsync命令 参数选项 【源目录或文件】目的目录或文件
把一个数据从一个地方复制到另一个地方(仅在一台机器增量),相当于cp
通过加参数实现删除文件和清空文件内容的功能,相当于rm命令
查看属性信息功能,相当于ls

实践

该算法查找大小或上次修改时间已更改的文件
rsync -avz /etc /opt/
touch /etc/tset.txt
rsync -avz /etc /opt/
echo 111>/etc/test.txt
rsync -avz/etc /opt
chown -R /wulin.wulin /etc/test.txt
rsync -avz /etc /opt/
vim /etc/test.txt
rsync /etc/test.txt
rsync -avz /etc /opt/

保持属性:
(rtopg==a)
rsync -vzrtopg /etc/hosts /opt/
ls -lhi /etc/hosts /opt/hosts

删除实践

删除文件内容

[root@wulin ~]# cp /etc/hosts /tmp/
cp:是否覆盖"/tmp/hosts"? y
[root@wulin ~]# rsync -avz /null.txt /etc/host
sending incremental file list
null.txt

sent 86 bytes received 35 bytes 242.00 bytes/sec
total size is 0 speedup is 0.00
[root@wulin ~]# rsync -avz /null.txt /etc/hosts
sending incremental file list
null.txt
恢复:
[root@wulin ~]# cat /etc/hosts
[root@wulin ~]# \cp /tmp/hosts /etc/
cp:是否覆盖"/etc/hosts"? y
[root@wulin ~]# cat /etc/hosts

删除目录下所有文件

[root@wulin ~]# mkdir /null
[root@wulin ~]# ls /opt
etc

让后面的opt和前面null目录内容保持一致
[root@wulin ~]# rsync -r --delete /null/ /opt/
[root@wulin ~]# ls /opt/

还可以查看属性
[root@wulin ~]# rsync /etc/hosts
-rw-r–r-- 0 2024/05/02 20:37:04 host

注意事项:拷贝的时候永远要注意目标目录和文件,防止被清空

远程shell模式:
借助类似ssh隧道传输数据,适合不同的机器之间的复制
异地拷贝,相当于scp,区别是scp是远程全量拷贝

pull拉(从远端拉到本地)
语法:
rsync命令 参数选项 本地路径 【认证用户】@ 【主机地址】:【目标路径】

push (从本地推到远端)
rsync命令 参数选项 本地路径 【认证用户】@【主机地址】:【目标路径】

push实践
没有用隧道:
rsync -avz /etc/hosts root@192.168.247.128:/opt/限制加密传输,限制root

使用隧道:
rsync -avz /etc/hosts -e “ssh -p 22” root@192.168.247.128:/root/
上述的命令是等价的,-e指定隧道 ssh是服务连接客户端,-p 22指定22端口

拉的实践:
没有用隧道:
rsync -avz root@192.168.247.128:/opt/限制加密传输,限制root

推拉:

  1. 参照物,执行命令的机器
  2. root@192.168.247.128连接的用户和主机,使用连接的主机和用户的密码

重点:适合rsync
null和null/区别,null是目录和目录下的内容
null/只是目录下的内容,不含本身

下面的方法不可用,所以此命令只能手工输入密码了(expect工具帮助交互输入密码)
[root@wulin ~] #echo 123456 >/etc/rsync_shell.password
[root@backup ~]# chmod 600 /etc/rsync_shell.password
rsync -avz /etc -e “ssh -p 22” wulin@192.168.247.128:/tmp/ --password-file=/etc/rsync_shell.password

企业工作中正常SSH优化
####by wulin #2024-5-1##
Port 52113
ListenADDress 192.168.247.128:52113
PermitRootLogin no
PermitEmptyPasswords no
UseDNS no
GSSAPIAUTHentication no
###by wulin #2024-5-1##

0.0.0.0:22 表示sshd服务监听任意网卡,监听所有ip请求

期中架构中修改:

vim /etc/ssh/sshd_config
####by wulin #2024-5-1##
Port 52113
ListenADDress 192.168.247.128:52113
PermitRootLogin yes
PermitEmptyPasswords no
UseDNS no
GSSAPIAUTHentication no
###by wulin #2024-5-1##

sed ‘s#PermitRootLogin no## PermitRootLogin yes#g’ /etc/ssh/sshd_config |grep RootLogin
在这里插入图片描述

rsync服务端配置过程图解

在这里插入图片描述

rsync守护进程模式

首先搭建rsync服务端(有守护进程),然后才能在客户端实现推拉数据
1.安装(不需要安装)
[root@wulin ~]# rsync --version
rsync version 3.1.2 protocol version 31
2. 配置文件【/etc/rsyncd.conf】
备份
[root@wulin ~]# cp /etc/rsyncd.conf {…ori}
[root@wulin ~]#
[root@wulin ~]#
[root@wulin ~]# >/etc/rsyncd.conf
cat >/etc/rsyncd.conf<<EOF
#rsync_config______________start
#created by wulin
#site:http://www.wulin.com
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 600
pid file = /var/run/rsync.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsync.log
ignore errors
read only = false
list = false
hosts allow = 192.168.247.128/24
hosts deny = 192.168.247.128/32
auth users = rsync_backup
secrets file = /etc/rsync.password
[backup]
comment = welcome to wulin backup!
path = /backup/
EOF

配置文件查帮助
man rsyncd.conf查看配置参数

创建一个用户:
在这里插入图片描述
授权rsync管理backup目录
在这里插入图片描述
创建密码文件并设置权限
格式:用户:密码
在这里插入图片描述
设定权限
在这里插入图片描述
启动rsync服务和检查
rsync --daemon(c6以前)
systemmctl start rsyncd
systemmctl enable rsyncd
systemmctl status rsyncd

ps -ef|grep sync|grep -v grep 检查进程

netstat -lntup|grep 873 检查端口

lsof-i :873检查端口

服务端配置完成

以下进行客户端服务器操作(任何一台机器)nfs01

配置密码文件并进行授权
方法一:认证密码文件
[root@nfs01 ~]echo “wulin123” >/etc/rsync.password#只有密码,没有用户,密码和服务的配置相同
chmod 600 /etc.rsync.password
cat /etc/rsync.password

ls -l /etc/rsync.password

方法二:
[root@nfs01 ~]echo ‘export RSYNC_PASSWORD=wulin’ >>/etc/bashrc
[root@nfs01 ~]tail -l /etc/bashrc
export RSYNCPASSWOD-wuklin
[root@nfs01 ~]. /etc/bashrc
[root@nfs01 ~]echo $RSYNC_PASSWORD
wulin

测试完成结果:
客户端rsync命令语法:

语法1:
rsync 【OPTIONS…】 【USER@】HOST::SRC… 【DEST】
rsync命令 参数选项 【虚拟用户】@【主机地址】::【模块名】 本地路径

语法2:
rsync 【options…】rsync://[user@]host::src… [dest]
rsync命令 参数选项 rsync://[虚拟用户]@【主机地址】/[模块名] 本地路径

push推:从本地到远端
语法1:
rsync 【options】【dest】【user@】host:src…
rsync命令 参数选项 本地路径【虚拟用户] @【主机地址】::【模块名】

语法2:
rsync [option…] [dest] rsync://[user@]host::src…

语法2:
rsync 【options】 【dest】 rsync://[users@]HOST::src
rsync命令 参数选项 本地路径 rsync://[虚拟用户]@【主机地址】/[模块名]

rsync客户端命令参数:
常用组合:–avz或者–vzrtopg(rtopg=a)
–v ––verbose 显示输出过程
–z ––compress压缩
–a ––archive多参数集合(–rtopgDI)
-r --recursive递归
-t --times保持修改时间属性
–o ––owner保持属主不变
–p ––group 保持权限不变
–g ––group 保持用户组不变
–l ––links 保持拷贝软链接
–q ––quiet 安静的拷贝
––bwlimit=KBPS限制i/o带宽,kbytes per second
––delete 删除
––exclude 排除
––exclude–from 从文件中排除
–D -devices 保持设备文件信息
–P –Progress 显示同步的过程及传输时的进度信息
fake super=yes 允许不以root身份运行,就可以改变文件属性(c7环境加此参数)

查看更多的rsync信息
man rsyncd.conf

rsync客户端连接时报错
错误一:
[root@backup~]#rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password=/etc/rsync.password
@Error:invalid uid rsync
rsync error:error starting client -server protocol (code5) at main.c(1648) (sender=3.1.2)
解答:没有rsync用户
[root@backup~]#useradd rsync
[root@backup~]#id rsync
uid=1001(rsync) gid=1001(rsync) 组=10011(rsync)
[root@backup~]#mkdir -p /backup/
[root@backup~]#chown -R rsync.rsync /backup/
[root@backup~]#ls -ld /backup/
drwxr-xr-x 2 rsync rsync 6 4月 /backup/

错误2:
[root@nfs01~]rsync -avz /etc/hosts rsync_backup@172.16.1.41:backup --password-file=/etc/rsync.password
sending incremental file list
hosts
rsync :chgrp “.hosts.YDuTjO” (in backup) failed :(operation not permitted)
sent223 bytes received 124bytses 694.00 bytes/sec
total size is 332 speed up is 0.96
rsync error:some files/attrs were not transferred (see previous errors) (code 23) at main.c(1178) (sender=3.1.2)
解答:增加如下参数到/etc/rsyncd.conf
fake super = yes #不用root用户也可以存储文件的完整属性
this allows the full attribute of a file to be stroed without having to have the daemon actually running as root
[root@backup~]#grep fake /etc/rsyncd.conf
fake super = yes
改完配置,要重启服务:
[root@backup~]systemctl restart rsyncd

(>/var/log/rsync.d.log清空
在测试:成功
[root@nfs01~]#rsync -avz /etc/hosts rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
@Error:auth failed on module backup
rsync error :error startimg client-server protovol (code5) at main.c(1649) (sender=3.1.2)
解答:用户认证有问题,用户密码错误,密码文件错误

企业中工作遇到的问题解决思路:

  1. 尽快恢复业务
  2. 线下模拟重现错误
  3. 找到原因和解决办法
  4. 修复线上环境

多模块复制
5. 多模块复制,修改配置如下
[root@backup~]#tail -2 /etc/rsyncd.conf
[wulin]
path = /data/
重启
systemctl restart rsyncd
创建/data目录,并授权
mkdir /data –p
chown –R rsync.rsync /data
ls -ld /data
测试
[root@nfs01 ~]#rsync -avz /etc rsync_backup@172.16.1.41::wulin -password-file=/etc/rsync.password

排除指定目录和文件数据复制(没有企业场景)
[root@nfs01 ~]#rsync -avz ––exclude=2.txt rsync_backup@172.16.1.41::backup -password-file=/etc/rsync.password
receiving increment file list
./
.pwd.lock
.updatod
1.txt
2.txt
3.txt
4.txt
5.txt

从文件中排除
[root@nfs01 ~]#echo {1…3}.txt|xargs -n 1 >/opt.wulin.txt
[root@nfs01 ~]#cat /opt/wulin.txt
1.txt
2.txt
3.txt
[root@nfs01]#rsync –avz ––exclude–from=/opt/wulin.txt rsync_backup@172.16.1.41::backup /tmp/ --password incremental file list
./
4.txt
5.txt