方案背景:A 服务器 和B服务器之间(可1对1,也可多对多,在此以简单的1对1举例)需要数据同步,此方案常用于远程灾备。
同步方案根据应用场景大约有两种,定时同步和实时同步。定时同步具有同步时间固定、实时性差、消耗资源较小的特点;实时同步具有实时性强、同步密集、较耗资源等特点。
1、安装软件:
yuminstallrsync-y
2、免密登录(也可使用明文采用模拟交互式登录方式,但是从安全角度出发还是建议使用免密登录):
ssh-keygen-trsa
生成后可以进入目录cd ~/.ssh/ 把生成的密钥~/.ssh/id_rsa.pub内容复制到远程主机的/root/.ssh/authorized_keys中
在这里很多同学对以上的操作为什么就不用输入密码的问题感到好奇,了解免密登录的同学可以跳过这段介绍。这里介绍下免密登录的原理:
rsa又称非对称密钥算法,对应的是对称密钥算法。
所谓对称密钥算法就是A和B通信,为了双方能确认对方的身份,A和B约定一个双方都知道的密钥k来确定身份如下:
A => (mk) B A发送m明文和K密钥跟B,B确认K密钥和之前A约定的一样,就能确定A的身份是真实的。反之B到A的通信也是如此。
非对称加密需要两个密钥:公钥 (publickey) 和私钥 (privatekey)。公钥和私钥是一对,如果用公钥对数据加密,那么只能用对应的私钥解密。如果用私钥对数据加密,只能用对应的公钥进行解密。因为加密和解密用的是不同的密钥,所以称为非对称加密。
所以以上的操作把A服务器的公钥共享跟了B服务器(远程主机),所以A服务器登录B服务器就不再需要传统的交互式输入密码登录,B服务器能通过A服务器的公钥而确认A服务器的真实性(私钥)。
[root@localhost~][root@localhost.ssh]id_rsaid_rsa.pubknown_hosts
3、编写shell脚本
[root@localhost~]rsync-avz-e[emailprotected]:/XXX/pub/data/
注意:rsync的数据同步分为拉和推两种不同的动作,在编写脚本之前,一定要测试命令是否能正常执行。
4、crontab定时执行配置(每天3点执行脚本)
到此,定时同步就配置好了。
Linux 数据同步方案Linux 数据同步方案
Inotify简介
Inotify 是一个 Linux特性,从版本2.6.13开始提供,它监控文件系统操作,比如读取、写入和创建。Inotify 反应灵敏,用法非常简单,并且比 cron 任务的繁忙轮询高效得多。
开始配置Inotify
注:在开始之前需要在服务器A和B上都安装好rsync。
1、在服务器B上调整inotify内核参数,vim /etc/sysctl.conf
fs.inotify.max_Queued_events=16384fs.inotify.max_user_instances=1024fs.inotify.max_user_watches=1048576
2、使调整inotify内核参数立刻生效
3、安装Inotify-Tool工具
#先安装扩展包源,否则inotify-tools找不到yuminstallepel-releaseyuminstallinotify-tools
4、打开两个终端,一个终端执行创建删除等操作,另一个执行Inotify-Tool工具,测试Inotify-Tool工具时候正常

inotifywait-mrq-emodify,create,move,delete/var/www/inotifywait:用于持续监控,实时输出结果inotifywatch:用于短期监控,任务完成后再出结果
5、编写脚本
vim /root/tongbu.sh
INOTIFY_CMD=RSYNC_CMD="rsync-avz-e'ssh-p22'/root/cs/[emailprotected]:/root/cs/"|DIRECTORYEVENTFILE[$(pgreprsync|wc-l)-le0];
注:这里要特别注意,逻辑关系不要搞混了,是B服务器推送跟A服务器。
6、添加开机自动后台自动运行,编辑/etc/profile文件,在最后一行加入下面语句
/bin/bash/root/tongbu.sh&
到此定时同步和实时同步都讲解完毕。根据不同的场景应用不同的方案,需要灵活应对,特别要注意一点的是。实时同步的方案,监控目录千万不能设置成日志目录,不然服务器cpu飙升很有可能会宕机。
linux进程间通信的方式?
# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。 进程的亲缘关系通常是指父子进程关系。 # 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。 # 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。 它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。 因此,主要作为进程间以及同一进程内不同线程之间的同步手段。 # 消息队列( message queue ) : 消息队列是由消息的链表,存放在内核中并由消息队列标识符标识。 消息队列克服了信号传递信息少、管道只能承载无格式字节流以及缓冲区大小受限等缺点。 # 信号 ( sinal ) : 信号是一种比较复杂的通信方式,用于通知接收进程某个事件已经发生。 # 共享内存( shared memory ) :共享内存就是映射一段能被其他进程所访问的内存,这段共享内存由一个进程创建,但多个进程都可以访问。 共享内存是最快的 IPC 方式,它是针对其他进程间通信方式运行效率低而专门设计的。 它往往与其他通信机制,如信号两,配合使用,来实现进程间的同步和通信。 # 套接字( socket ) : 套解口也是一种进程间通信机制,与其他通信机制不同的是,它可用于不同及其间的进程通信。
linux系统死机应该如何处理?reisub用过了,不管用。
Linux系统死机的解决办法Linux系统死机了怎么办?怎样让系统在死机以后如何安全的让他摆脱死机状态,本文讲述如何从 linux 的死机状态中挣脱出来。 Linux 死机有很多种情况,最常见的是系统负载过高导致的。 如上次介绍的 fork 炸弹就是这个原理,此外还可以运行内存耗用极大的程序(如虚拟机),也会迅速提升系统负载。 由于系统负载过高导致的卡死,一定是解决的越快越好!此时必须 记住的是,不能再试图依赖任何图形界面的东西,如 Gnome 的系统监视器(这是我从 Windows 遗留下来的愚昧习惯……),这只会继续加重这种卡死的局面。 那怎么办?不要怕,Linux 最初就是不需要图形界面的,因为有一个很强大的文字界面。 按 Ctrl-Alt-F1(F1-F6 一般来说都可以),然后等一会儿,就会切换到 tty,也就是所谓的文字界面。 这个时候需要用用户名密码登入。 注意,可能键盘输入的速度比较慢,不过应该还是可以忍受的。 下面在提示符后面输入 top 回车,这时会看到一张动态的表,上面列出了耗用资源最多的进程。 观察它刷新一两次,按q退出,然后输入 kill ,其中的 PID 你可以在 top 里面看到。 这个时候应该会快了不少,如果你发现没有成功结束掉,就再输入 kill -KILL ,这次基本上就没问题了。 除了上面这种情况外,一些底层软件的 bug 也可能导致一些奇怪的死机问题。 我某位同学近日就因为莫名其妙的死机强制重启把 ext4 的分区给伤了。 (最后是 sysreccd 修复了,貌似是分区表部分损坏)据其说,死机是键鼠均无反应。 一般来说,系统负载高导致的死机,在可怕键盘也会有反应,有人说如果死机到键盘无响应“负载 都无限大了”,亦有人说这可能是 X Server 与驱动配合有问题导致的。 不过我们考虑一下遇到这种情况怎么办?OK,这是今天才学到的方法,叫做 reisub,这个方法可以在各种情况下安全地重启计算机。 大家在键盘上找,可以找到一个叫做“Sys Rq”的键,在台机的键盘上通常与 Prt Sc 共键,在笔记本可能在其他位置,如 Delete。 以台机为例,要使用这种方法需要按住 Alt-Print(Sys Rq),然后依次按下 reisub 这几个键,按完 b 系统就会重启。 下面解释一下这个方法:其实 Sys Rq 是一种叫做系统请求的东西,按住 Alt-Print 的时候就相当于按住了 Sys Rq 键,这个时候输入的一切都会直接由 Linux 内核来处理,它可以进行许多低级操作。 这个时候 reisub 中的每一个字母都是一个独立操作,他们分别表示:unRaw将键盘控制从X Server那里抢回来tErminate 给所有进程发送 SIGTERM 信号,让他们自己解决善后kIll给所有进程发送 SIGKILL 信号,强制他们马上关闭Sync将所有数据同步至磁盘Unmount将所有分区挂载为只读模式reBoot重启这6个字母的顺序是不可以记错的。 那怎么记呢?这里提供一个个人认为比较好的方法:单词 busier(busy 的比较级,更忙)倒过来就是了。 基本上就这样了,Linux 的死机本来就不多见,现在见了也可以安全解决。
如何通过ssh远程登录linux系统
1、使用用户名密码登录在命令行中输入命令:ssh username@ip_address -p port之后系统会提示输入密码,输入后即可登录如果不添加-p选项,则默认是22端口还可以使用-l选项输入用户名:ssh -l username ip_address -p port2、使用密钥登录(不使用密码)首先生成密钥,在任意目录下输入命令:ssh-keygen -t rsa -P -P表示密码,-P 表示空密码之后系统会提示输入生成的密钥文件的文件名,可以输入任意名称,比如id_rsa,回车系统会在当前目录下生成id_rsa与id_两个文件在根目录下新建文件夹,将生成的密钥文件拷贝过去mkdir -p ~/-p选项表示如果文件夹已经存在则不再新建。 然后将之前生成的两个文件都拷贝到文件夹中cp id_rsa* ~//把公钥文件id_拷贝到需要登录的服务器上用scp命令scp -P port ~//id_ username@ip_address:~-P表示要登录服务器的端口好,不加默认为22。 之后系统会提示输入密码,输入即可完成拷贝登录远程服务器,在用户根目录下新建文件夹(如果不存在),在其中新建authorized_keys文件(如果不存在),把id_添加到authorized_keys文件中mkdir -p ~/这是在远程服务器上新建ssh文件夹cat id_ >> /authorized_keys将id_文件添加到authorized_keys文件中(如文件不存在则新建)注意:要保证与authorized_keys用户自己都有写权限退出当前远程登录,之后就可以不使用密码远程登录了
发表评论