第十一周LINUX 学习笔记
keepalived
keepalived:
基于vrrp(虚拟冗余路由协议)的实现
virtual server: 对于IPVS
vrrp_script: 调用外部脚本 nginx haproxy等轻量级的实现
所谓的vrrp就是为了解决前端路由器如果发生单点故障导致后方服务器全部不能与外部通信的问题。于是两台路由器通过vrrp协议连接,两个路由器都给予虚拟的IP地址(VIP)和虚拟的MAC地址(VMAC),当发生故障的时候,两个地址一起转移,而不像其他的高可用功能一样,需要进行一次虚假的mac地址的通告。因此,所以所谓的keepalived就是将VRRP协议实现在了LINUX上,但是又不仅仅限制于转换地址的功能,也能够提供如转移一些nginx的服务的功能。
而keepalived之间的资源转移是通过降低主节点的优先级的方式,将资源转移到副节点的方式
/etc/keepalived/keepalived.conf
/etc/rc.d/init.d/keepalived
keepalived.conf
global_defs { #全局配置段,一般来配置邮件功能
notification_email {#收件人
root@localhost
}
notification_email_from kaadmin@localhost #发件人
smtp_server 127.0.0.1
smtp_connect_timeout 30
router_id LVS_DEVEL
}
vrrp_instance VI_1 { #虚拟路由段的配置
state MASTER #初始状态,如果这边设置了master 那么backup的priority 的值一定要小于master的
interface eth0 #通信网卡
virtual_router_id 51 #虚拟路由的ID号,不能大于255 还是MAC地址的最后一位,所以MAC地址就可以直接由这个来定义
priority 100 #初始优先级
advert_int 1 #初始化通告的个数
authentication { #认证方式
auth_type PASS #认证类型
auth_pass 1111 #认证密码
}
virtual_ipaddress { #VIP配置段
192.168.1.103
}
track_script{
abc #引用脚本名称
}
}
vrrp_script abc{ #可以定义一个额外的脚本
#脚本功能
}
1.如何在状态转换时进行通知?
一般在vrrp_instance{}中进行使用
to MASTER transition
notify_master /path/to_master.sh
to BACKUP transition
notify_backup /path/to_backup.sh
FAULT transition
notify_fault "/path/to_backup.sh VG_1"
MASTER通知脚本实例:
#!/bin/bash
#
vip=192.168.1.103
contact='root@localhost'
thisip=`ifconfig eth0 | awk '/inet addr:/{print $2}' | awk -F: '{print $2}'` #获取IP地址的
nofity(){
mailbody="vrrp transition,$vip floated to $thisip"
subject="$thissip is to be $vip master"
echo $mailbody | mail -s $subject $contact
}
nofity
或者合并为一个脚本,在keepalived.txt中有提供案例
在vrrp_instance配置中只需要加入
notify_master "/path/notify.sh master"
notify_backup "/path/notify.sh backup"
notify_fault "/path/notify.sh fault"
2.如何配置ipvs?
virtual server
realserver
health check
keepalived.conf 中的示例
virtual_server 172.168.100.100 80 {# VIP 地址和端口
delay_loop 6
lb_algo rr #负载均衡方法
lb_kind DR #LVS工作模型
nat_mask 255.255.0.0
persistence_timeout 0 #持久功能
protocol TCP #基于什么工作方式
real_server 172.16.100.17 80 {#RIP
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
real_server 172.16.100.18 80 {#RIP
weight 1
HTTP_GET {
url {
path /
status_code 200
}
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}
3.如何对某特定服务做高可用
1丶监控服务
vrrp_script{
}
2丶追踪监控服务
track_script{
}
另外应该在nofity脚本中定义根据状态来启动或停止nginx
notify_master "/path/notify.sh master"
notify_backup "/path/notify.sh backup"
notify_fault "/path/notify.sh fault"
设置vrrp_script监控服务,防止因为nginx进程以及停止了,服务却还没有停止,导致无法转移的情况
vrrp_script chk_nginx{
script "killall -0 nginx"
inerval 1
weight -2
fall 2 失败次数一次
rise 1 成功次数一次就行
}
4.如何实现基于多虚拟路由的master/master 模型
在配置文件中定义两个vrrp_instance
vrrp_instance VI_1 { #虚拟路由段的配置
state MASTER #初始状态,如果这边设置了master 那么backup的priority 的值一定要小于master的
interface eth0 #通信网卡
virtual_router_id 51 #虚拟路由的ID号,不能大于255 还是MAC地址的最后一位,所以MAC地址就可以直接由这个来定义
priority 100 #初始优先级
advert_int 1 #初始化通告的个数
authentication { #认证方式
auth_type PASS #认证类型
auth_pass 1111 #认证密码
}
virtual_ipaddress { #VIP配置段
192.168.1.103
}
vrrp_instance VI_2 { #虚拟路由段的配置
state BACKUP #初始状态,如果这边设置了master 那么backup的priority 的值一定要小于master的
interface eth0 #通信网卡
virtual_router_id 55 #虚拟路由的ID号,不能大于255 还是MAC地址的最后一位,所以MAC地址就可以直接由这个来定义
priority 99 #初始优先级
advert_int 1 #初始化通告的个数
authentication { #认证方式
auth_type PASS #认证类型
auth_pass 1111 #认证密码
}
virtual_ipaddress { #VIP配置段
192.168.1.102
}
另外一个机子的配置文件只需要改变两边的初始状态 和初始优先级
第十一周LINUX 学习笔记的更多相关文章
- 第八周LINUX学习笔记
vsftpd丶NFS丶SAMBA nfs基于rpcsamba基于cifs(smb) DRBD: ftp:File Transfer protocol 文件传输协议 两个连接: tcp:命 ...
- 第七周LINUX学习笔记
HTTP的基本操作 3月17资源子网和通信子网套接字:两类 socket:IP port IP:port Ip.port unix sock:基于文 ...
- 第六周LINUX学习笔记
DNS服务 DNS:Domain Name Service //协议 实现:BIND(Berkeley Internet Name Domain) 监听端口: UDP:5 ...
- 第三周LINUX学习笔记
周期性任务丶find 文件查找:find命令 locate :在数据库中查找,非实时查找,精确度不高,查找速度快,模糊查找 /tmp/passwad/a.textfind:实时查找:速度慢 ,精确 ...
- 第五周linux学习笔记
第五章 系统调用 5.1 与内核通信 系统调用在用户空间进程和硬件设备之间添加了一个中间层.该层主要作用有三个. 它为用户空间提供了一种硬件的抽象接口. 系统调用保 证了系统的毡定和安全. 在第 3 ...
- 第十周LINUX 学习笔记
LVS集群nat丶DR HA:高可用 平均无故障时间/(平均无故障时间+平均修复时间) 负载均衡 次序lb(负载)——>ha()LB tcp:lvs,haproxy 应用 ...
- 第九周LINUX 学习笔记
基于GTID的mysql主从简单复制 一.简单主从模式配置步骤1.配置主从节点的服务配置文件1.1.配置master节点:[mysqld]binlog-format=ROWlog-bin=master ...
- 第十二周LINUX学习笔记
zabbix zabbix-server: 监听的端口10051 zabbix-agent: 10050 Zabbix: Item, Key(键) ethercard.traffic[eth0] ac ...
- Linux 学习笔记
Linux学习笔记 请切换web视图查看,表格比较大,方法:视图>>web板式视图 博客园不能粘贴图片吗 http://wenku.baidu.com/view/bda1c3067fd53 ...
随机推荐
- 使用docker部署nginx+tomcat架构(2):访问mysql数据库
上一篇完成了通过docker部署nginx+tomcat的基础软件架构,但是距离一个真正可用的软件架构还差得很远.其中最重要的一点是缺少数据库这个角色的存在,那么本篇就来完善这一点. 废话少说,直接进 ...
- JavaScriptDOM编程学习笔记(一)DOM概述
首先介绍下DOM,一套对文档的内容进行抽象和概念化的方法.即Document Object Model,当创建了一个网页并加载到Web浏览器中时,DOM就把编写的网页转换为一个文档对象,而通过浏览器提 ...
- c语言之连接符
c语言之连接符 1.连接符 连接符的概念是结合define预编译指令的使用技巧,用户可以向define中传入字符串来调用不同功能的函数. 2.代码例子 #include <stdio.h> ...
- WeakhashMap源码1
弱引用(WeakReference)的特性是:当gc线程发现某个对象只有弱引用指向它,那么就会将其销毁并回收内存.WeakReference也会被加入到引用队列queue中. 它的特殊之处在于 Wea ...
- [转帖]Linux chattr 命令详解
Linux chattr 命令详解 https://www.cnblogs.com/ftl1012/p/chattr.html 常见命令参数 1 2 3 4 5 6 7 8 9 10 11 12 A: ...
- Linux基础(01)开发环境的搭建
内核源码下载 : https://blog.csdn.net/u011375704/article/details/81866427 1.在虚拟机安装Ubuntu 14.04版本 (安装时设置好用户名 ...
- Django 模板语言 条件判断
Django 模板语言 条件判断 ############### 条件 ################## # view 文件 def func(request): ... return rende ...
- 『线段树及扫描线算法 Atlantis』
入门看这边『线段树 Segment Tree』. 扫描线 扫描线是一种解决一类平面内统计问题的算法,通常会借助线段树来实现,我们通过一道例题来引入这个算法. Atlantis Description ...
- 在vps上搭建hexo博客
最近更换了服务器,需要把自己的Hexo Next重新部署到新服务器上,本文记录一下在vps上搭建hexo博客的过程. 在vps上搭建hexo博客需要下面这些工具: Nginx: 用于博客展示 SSH: ...
- Linux学习笔记之Linux文件系统详解
0x00 机械硬盘 机械磁盘由磁头(head).磁道(track).柱面(cylinder).扇区(sector)和盘片(platter)组成.其中,磁头悬浮在盘片上,并且每张盘片上下各有一个磁头:每 ...