21:开发脚本管理服务端LVS案例
[root@lb03 scripts]# cat lv_manager.sh
#!/bin/bash #定义只能是root用户执行
if [ $UID -ne ];then
echo "permission deny 必须root用户执行"
exit fi
#文件存在就加载文件
[ -f /etc/init.d/functions ] && . /etc/init.d/functions #定义绑定的虚拟ip vip_netmask=10.0.0.13/ vip=10.0.0.3 service_addr=10.0.0.13:
wbs=(
10.0.0.17:
10.0.0.18:
) count_pkg=$(rpm -qa|egrep ipvsadm|wc -l) function start () {
#检查虚拟IP个数,IP检测和ipvsadm -ln两种方法检查
count_vip_check=$(ip a|grep 10.0.0.1[]|wc -l)
count_vip_check2=$(ipvsadm -ln|grep "10.0.0.1[3]:80"|wc -l)
if [ ${count_vip_check} -eq -o ${count_vip_check2} -eq ]
then
echo "${count_vip_check} 虚拟IP已经存在"
else
ip addr add 10.0.0.13/ dev eth0
ipvsadm -C
ipvsadm --set
ipvsadm -A -t 10.0.0.13: -s wrr -p
fi
#管理工具ipvsadm不存在就安装
[ ${count_pkg} -eq ] && yum install ipvsadm -y >/dev/null #先检查一下网址通不通
for i in ${wbs[@]}
do web_code=$(curl -o /dev/null -w "%{http_code}" -s $i)
if [ "${web_code}" == "" ]
then
echo "${i} is ok"
ipvsadm -a -t 10.0.0.13: -r $i -g -w else
echo "添加的服务 ${i} 没有打开" fi done } stop () { count_vip_check=$(ip a|grep 10.0.0.1[]|wc -l)
if [ ${count_vip_check} -eq ]
then echo "虚拟IP 不存在"
exit
else
ip addr del 10.0.0.13/ dev eth0
ipvsadm -C
fi } case "$1" in start) start
;; stop) stop
;; restart) stop
sleep
start
;; *)
echo "Usage {start|stop|restart}"
;; esac
================================
下面是改过的比上面好
[root@lb04 scripts]# cat lv_manager.sh
#!/bin/bash #定义只能是root用户执行
if [ $UID -ne ];then
echo "permission deny 必须root用户执行"
exit fi
#文件存在就加载文件
[ -f /etc/init.d/functions ] && . /etc/init.d/functions #定义绑定的虚拟ip vip_netmask=10.0.0.13/ service_addr=10.0.0.13:
wbs=(
10.0.0.17:
10.0.0.18:
) count_pkg=$(rpm -qa|egrep ipvsadm|wc -l) function start () {
#检查虚拟IP个数,IP检测和ipvsadm -ln两种方法检查
count_vip_check=$(ip a|grep 10.0.0.1[]|wc -l)
count_vip_check2=$(ipvsadm -ln|grep "10.0.0.1[3]:80"|wc -l)
if [ ${count_vip_check} -eq -o ${count_vip_check2} -eq ]
then
echo "${count_vip_check} 本地虚拟IP已经存在,将退出" && exit
else
check_count=$(nmap 10.0.0.13|grep "Host is up"|wc -l)
[ ${check_count} -gt ] && echo "远端 13 ip开启,将退出" && exit
ip addr add 10.0.0.13/ dev eth0
ipvsadm -C
ipvsadm --set
ipvsadm -A -t 10.0.0.13: -s wrr -p
fi
#管理工具ipvsadm不存在就安装
[ ${count_pkg} -eq ] && yum install ipvsadm -y >/dev/null #先检查一下网址通不通
for i in ${wbs[@]}
do web_code=$(curl -o /dev/null -w "%{http_code}" -s $i)
if [ "${web_code}" == "" ]
then
echo "${i} is ok"
ipvsadm -a -t 10.0.0.13: -r $i -g -w else
echo "添加的服务 ${i} 没有打开" fi done } stop () { count_vip_check=$(ip a|grep 10.0.0.1[]|wc -l)
if [ ${count_vip_check} -eq ]
then echo "虚拟IP 不存在"
exit
else
ip addr del 10.0.0.13/ dev eth0
ipvsadm -C
fi } case "$1" in start) start
;; stop) stop
;; restart) stop
sleep
start
;; *)
echo "Usage {start|stop|restart}"
;; esac
21:开发脚本管理服务端LVS案例的更多相关文章
- 转: 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端
from: http://ybak.iteye.com/blog/1853335 基于netty+ protobuf +spring + hibernate + jgroups开发的游戏服务端 游戏服 ...
- ubuntu下安装 gSOAP 用于C/C++开发web service服务端与客户端
昨天在ubuntu下进行安装gSOAP,费了很多时间,没成功,今天又来找了大量教程资料,终于一次成功,这里写下自己的安装步骤和方法,供大家参考. 首先下载gsoap,我下载的是gsoap-2.8.1. ...
- 适合新手:从零开发一个IM服务端(基于Netty,有完整源码)
本文由“yuanrw”分享,博客:juejin.im/user/5cefab8451882510eb758606,收录时内容有改动和修订. 0.引言 站长提示:本文适合IM新手阅读,但最好有一定的网络 ...
- 网络编程之TCP客户端开发和TCP服务端开发
开发 TCP 客户端程序开发步骤 创建客户端套接字对象 和服务端套接字建立连接 发送数据 接收数据 关闭客户端套接字 import socket if __name__ == '__main__': ...
- 支付宝移动支付开发详细教程服务端采用.net mvc webapi(C#)
转自:http://www.kwstu.com/ArticleView/netmvc_201511132005431321 最近开发手机app需要实现移动支付功能,由于考虑支付安全将支付宝生成签名写到 ...
- 微信移动支付V3开发详细教程服务端采用.net mvc webapi(C#)
转自:http://www.kwstu.com/ArticleView/netmvc_201511132050268716 最近开发手机app需要实现移动支付功能,由于考虑支付安全将微信支付生成签名写 ...
- 二、网络编程-socket之TCP协议开发客户端和服务端通信
知识点:之前讲的udp协议传输数据是不安全的,不可靠不稳定的,tcp协议传输数据安全可靠,因为它们的通讯机制是不一样的.udp是用户数据报传输,也就是直接丢一个数据包给另外一个程序,就好比寄信给别人, ...
- Linux下用gSOAP开发Web Service服务端和客户端程序
网上本有一篇流传甚广的C版本的,我参考来实现,发现有不少问题,现在根据自己的开发经验将其修改,使用无误:另外,补充同样功能的C++版本,我想这个应该更有用,因为能用C++,当然好过受限于C. 1.gS ...
- Linux下用gSOAP开发Web Service服务端和客户端程序(一)
1.功能说明: 要开发的Web Service功能非常简单,就是一个add函数,将两个参数相加,返回其和. 2.C版本的程序: (1)头文件:SmsWBS.h,注释部分不可少,url部分的IP必须填写 ...
随机推荐
- Swift中结合使用枚举与Switch
定义: 用法:
- Redis核心解读
http://www.wzxue.com/redis核心解读/
- CSS3: box-shadow 阴影
box-shadow是给元素块添加周边阴影效果 语法: 对象选择器 {box-shadow:X轴偏移量 Y轴偏移量阴影 模糊半径 阴影扩展半径 阴影颜色 [投影方式] } box-shadow: h- ...
- Android Studio NDK 新手教程(5)--Java对象的传递与改动
概述 本文主要Java与C++之间的对象传递与取值.包括传递Java对象.返回Java对象.改动Java对象.以及性能对照. 通过JNIEnv完毕数据转换 Java对象是存在于JVM虚拟机中的,而C+ ...
- 【LeetCode】Find Minimum in Rotated Sorted Array 解题报告
今天看到LeetCode OJ题目下方多了"Show Tags"功能.我觉着挺好,方便刚開始学习的人分类练习.同一时候也是解题时的思路提示. [题目] Suppose a sort ...
- JSON——Java中的使用
1. 构建JSON方法(数据——>JSON) 这里使用Maven构建项目 在pom.xml中添加如下依赖 <dependency> <groupId>org.json&l ...
- Velocity中文乱码问题解决方法
http://yonge812.iteye.com/blog/1010290 Velocity中文乱码问题需要注意一下几点: 1.eclipse默认编码方式 2.页面的编码方式 3.volocity模 ...
- sql DATEPART() MONTH() convert() cast() dateadd() DATEDIFF() with(nolock)
DATEPART() 函数用于返回日期/时间的单独部分,比如年.月.日.小时.分钟等等. 语法 DATEPART(datepart,date) date 参数是合法的日期表达式.datepart 参数 ...
- 记一起和前端没什么卵关系的OPTION 405问题
记一起和前端没什么卵关系的后端405问题 问题的关键点在于本来是POST请求,会变成OPTION请求,并且提示405报错,会类似跨域.并且只有某些手机机型才会(如Oppo系列). 其实跨域的问题,如果 ...
- sublime text 3 设置默认自动换行
如果每次打开文件都不自动换行, 设置如下在sublime菜单栏选择 "选项-->设置-用户", 在打开的配置文件中添加 "word_wrap" : fal ...