- 浏览: 271664 次
- 性别:
- 来自: 哈尔滨
文章分类
- 全部博客 (146)
- 算法 DP (2)
- 杂谈 (9)
- Linux 软件 (16)
- 解题报告 (5)
- debian系统学习 (2)
- Linux--Ubuntu篇 (34)
- PHP (1)
- C++ (10)
- photoshop学习 (1)
- Crazy English (3)
- 网站开发 (10)
- 软件安装 (6)
- 编程经验 (4)
- acm (3)
- 脚本 (3)
- Linux编程 (6)
- vim (1)
- 项目经验 (2)
- Tex (2)
- 读书笔记 (6)
- Windows下软件 (4)
- 笔试面试 (2)
- Android (2)
- 设计模式 (1)
- 数据处理 (1)
- 小算法 (1)
- 那点问题 (1)
- shell (2)
- NLP (2)
- java (4)
- 小程序 (0)
最新评论
-
zi413293813:
不错,很有用!3Q
eclipse 软件的背景颜色、字体设置 -
twlkyao:
不错,身体最重要。
eclipse 软件的背景颜色、字体设置 -
cry615:
不错,赞一个!
eclipse 软件的背景颜色、字体设置 -
showzh:
suse忘记root密码修改方法
suse忘记root密码修改方法 -
dc0453:
包子,把你最近的心得都贴出来啊
网络编程API
OS: Cent OS 6.2
(1) 下载、安装 ipvsadm
网址: http://www.linuxvirtualserver.org/software/ipvs.html
make 的时候出现错误,缺少 "netlink\netlink.h".从网上查找资料后,找到原因是没有安装 libnl-devel 包,那就安装吧。
yum install -y libnl* popt* kernel-headers kernel-devel
之后,make。 OK!
(2)下载、安装 keepalived
网址: http://www.keepalived.org/download.html
首先 ./configure 但是两个关键项是NO
Use IPVS
Framework
: No
IPVS sync daemon support : No
解决办法: 没有指定linux源码的路径
./configure --with-kernel-dir=/usr/src/kernels/2.6.xx //根据自己的实际路径替换
之后一切正常会看到:
Use IPVS
Framework
: Yes
IPVS sync daemon support : Yes
之后,make && make install
(3)写配置文件
最简单的实验环境是3台server
master: 192.168.1.61
web1: 192.168.1.62
web2: 192.168.1.63
vip: 192.168.1.100
master:
mycp_install.sh
#! /bin/bash cp /usr/local/etc/rc.d/init.d/keepalived /etc/rc.d/init.d/ cp /usr/local/etc/sysconfig/keepalived /etc/sysconfig/ mkdir /etc/keepalived cp /usr/local/etc/keepalived/keepalived.conf /etc/keepalived/ cp /usr/local/sbin/keepalived /usr/sbin/ chkconfig --add keepalived chkconfig --level 2345 keepalived on # create the config file of the keepalived VIP=192.168.1.100 WEB1=192.168.1.62 WEB2=192.168.1.63 LB_ETH=eth0 cat << EOF > /etc/keepalived/keepalived.conf ! Configuration File for keepalived vrrp_instance VI_1 { state MASTER # if this is a backup LB, then replace it with BACKUP interface $LB_ETH virtual_router_id 51 priority 100 # the backup's priority should be little than this adver_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { $VIP # if there are many ips ,then write each for one line } } virtual_server $VIP 80 { delay_loop 6 # every 6 seconds querys the realserver's status lb_algo wrr # LVS algorithm lb_kind DR # LVS work mode , Direct Routing persistence_timeout 60 # the same ip link in 60 seconds will be send to the same server protocol TCP # use TCP protocol checking the realserver's status real_server $WEB1 80 { weight 3 TCP_CHECK { connect_timeout 10 # 10 secs no response will be recognised with timeout nb_get_retry 3 delay_before_retry 3 connect_port 80 } } real_server $WEB2 80 { weight 3 TCP_CHECK { connect_timeout 10 # 10 secs no response will be recognised with timeout nb_get_retry 3 delay_before_retry 3 connect_port 80 } } } EOF
在master上运行此脚本,为啥?因为keepalived的install只给安装到了/usr/local中,并没有放到/etc下面的配置文件中。只能自己移动了,为了以后方便,写一个脚本,以后再配置,就直接运行就OK了!
两个realserver上运行的脚本:
lvs_real
#! /bin/bash #Configuration File for real server VIP=192.168.110.100 . /etc/rc.d/init.d/functions case "$1" in start) ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast $VIP /sbin/route add -host $VIP dev lo:0 echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce sysctl -p > /dev/null 2>&1 echo "RealServer Start OK" ;; stop) ifconfig lo:0 down route del $VIP > /dev/null 2>&1 echo "0" > /proc/sys/net/ipv4/conf/lo/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/lo/arp_announce echo "0" > /proc/sys/net/ipv4/conf/all/arp_ignore echo "0" > /proc/sys/net/ipv4/conf/all/arp_announce echo "RealServer Stoped" ;; *) echo "Usage: $0 {start|stop}" exit 1 esac exit 0
这里解释一下arp_ignore和arp_announce:
1> arp_ignore
arp_ignore 是linux中应答arp的策略,基本的值有3个,0,1,2 可以到8,8是拒绝应答也就是关闭。
0 是默认值,就是对于任何请求,不管问的是哪个网口,只要本地所有的ip里有一个是匹配的,这个网口就会回答arp请求。
1 是如果我这个网口有这个ip,那么我就回应你。就是是我的活我就干
2 这个条件就更苛刻一点了,不光是我的活,你还得有资格问我,就是请求arp包的ip地址必须在同一个网段。
这里我们设置成了1,也就是对于real server上,不会回应vip对应的arp请求包,因为我们对外是一个整天啊,只有负载均衡器master有这个权利啊,大家不能抢功劳不是,不然就乱套了。外界只会找到master的 mac地址
2> arp_announce
arp_annouce是linux中发送arp请求包的策略。也就是用哪个ip,哪个mac来请求的问题。基本3个值0,1,2
0 使用本地网卡上任何一个ip地址和mac都可以
1 尽量使用对应网口上的网段的ip地址和设备的mac
2 使用对应网卡上的最好的适合请求arp包的ip地址和设备mac
lvs_announce 设置成2 的原因就是 在客户请求完80端口的数据包发送时需要走出内网,就要找网关,但是此时如果使用vip去发送arp请求,显然网关要糊涂了,一会是master是mac对应vip,一会是real server的mac对应vip,也就是所谓的arp欺骗了。所以为了避免这样的情况,就配置成使用网口的ip地址和mac来发送arp请求包。
为了方便呢,将这个脚本放到/usr/bin/下方便以后使用:
mv lvs_real /usr/bin chmod +x /usr/bin/lvs_real
(4)测试
1> WEB1和WEB2要求安装一个http服务器,一般centos会自动安上,但是没有启动,如果没有安装的话,安装一下并开启:
yum install -y httpd /etc/init.d/httpd start cat <<EOF > /var/www/html/index.html <html> <head><title>LVS Test Page</title></head> <body> <center> LVS worked! The real server's ip is : 自己填成web1的,另一个写成web2的,以便观察 </center> </body> </html> EOF
2> MASTER上要执行的:
#service keepalived start #启动配置对应的lvs侧率,并检查真实的server #ipvsadm -ln //查看lvs的情况,用了什么算法,有几台真实服务器在线等等
之后分别在WEB1和WEB2上分别执行lvs_real:
#lvs_real
一切正常的话找一个浏览器,键入: http://192.168.1.100 就会看到lvs分配到对应的页面了,根据上面的配置文件,一分钟内的链接都会被分配到同一台real server上,如果总是看到同一台real server的内容,不要灰心啊,找另一台机器在开一个浏览器很快就可以看到,当然可以在配置的时候选择不同的均衡算法和链接保持时间来进行快速查看两台real server是不是都好使。
说一下我配置的过程中遇到的问题,在最后一步总是MASTER不转发包,这个是由于centos防火墙把本机没开启的80端口的服务相关的数据包都拒绝掉了,所以,总是看不到应该访问的页面,于是直接关了防火墙,应该是给iptables加一个规则,也就是80端口的数据包可以通过。不关闭的话,添加下面的规则也是可以的:
iptables -I INPUT -p tcp -dport 80 -j ACCEPT
关闭防火墙的方法:
/etc/init.d/iptables status
/etc/init.d/iptables stop
还有一个 /etc/sysctl.conf 中
net.ipv4.ip_forward = 1
Ok!基本成功了,下一步是看源代码了。。。。苦逼和兴奋的日子还在后面,因为源码面前没有秘密。
参考资料:
arp_ignore && arp_announce 【http://apps.hi.baidu.com/share/detail/14756745】
keepalived configure时错误 【http://blog.sina.com.cn/s/blog_8317516b0100weom.html】
lvs+keepalived 的脚本等基本配置【http://www.xtgly.com/2010/12/17/centos-5-5-lvskeepalived-%E5%AE%89%E8%A3%85%E9%85%8D%E7%BD%AE.htm】
发表评论
-
拥有rw权限的文件在vim中编辑时提示W10:只读文件,无法修改
2014-09-24 18:49 945解决: :set modifiable :set w ... -
linux系统更新正在运行进程的可执行文件需要注意的text file busy的原因及解决方法【转】
2014-07-23 11:04 2117转自:http://www.jb51.net/LINUXji ... -
vim 技巧
2014-04-10 16:35 621vim 里的非贪婪匹配: 使用 & ... -
linux 编程
2014-04-09 10:19 5521. sleep #include <iostrea ... -
signal
2013-11-17 16:23 5571. linux 下各信号的解释: man 7 signa ... -
linux 显示中文文件乱码
2013-11-11 20:24 658export LANG=zh_CN.UTF-8 添加到 ... -
linux下显示其他时区时间
2013-09-03 13:50 2028时区的系统常见定义: unix系统时区设置: 每个用户可 ... -
screen
2013-03-01 14:57 790screen 是一个主要应用于一个终端连接多个服务器的情形, ... -
java生成的md5和linux下用md5sum生成的md5摘要不一致问题
2012-10-23 17:05 2829参照这个: http://wolfdream.itey ... -
配置本地或者局域网的ubuntu源
2012-10-21 12:36 9225简单记录一下原理:将原来需要在网上更新的包文件下载到本地的一个 ... -
Ubuntu 10.04 Intel酷睿i5 2300显卡解决方法
2012-07-23 17:07 10641. 添加显卡驱动源: sudo add-apt-rep ... -
initrd.img 解压分析
2012-03-17 15:15 3017vmlinuz 是一个为内核映像, vmlinuz里面有gz ... -
centos 6.2 安装内核源码
2012-03-16 18:58 3522centos 6.2 废话不多说,说说过程: ... -
ubuntu下看xp文件名乱码
2011-11-22 12:15 1708利用软件 convmv 可以 $sudo apt-g ... -
Xmanager 连接 ubuntu10.10
2011-11-02 16:05 2663XManager 访问 ubuntu ... -
ubuntu 下 omnet++ + inet + oversim 安装
2011-10-27 22:47 3732安装 omnet++ 从官网上下载omnet++, h ... -
Linux下软件介绍
2011-07-29 19:30 851最近用了几个linux软件记录下来,以后陆续使用到的好用的软件 ... -
linux 分区及引导笔记
2011-07-18 13:50 897开机流程: 1. BIOS 加电,运行bios自检程序,识别 ... -
libpcap 安装和测试
2011-07-17 11:06 6002libpcap 安装和测试 I 首先安装 libpc ... -
shell 学习
2011-07-16 20:20 13011. shell 根据表现方式与读取使用者输入种类的不同, ...
相关推荐
主要实现双机热备和lvs虚拟化,使用KeepAlived+nginx。
在Cent OS系统上安装和部署MongoDB,可以分为几个关键步骤:安装Cent OS、安装MongoDB、配置单节点、设置副本集以及部署分片集群。下面将详细讲解这些过程。 **1. 安装Cent OS** 首先,确保你的计算机上已经安装了...
【LAMP环境搭建详解】 LAMP(Linux + Apache + MariaDB + PHP)是Web开发领域常用的服务器环境,尤其适用于PHP编程。本实验将通过VMware虚拟机在CentOS7操作系统上搭建这一环境,以下是详细步骤: 1. **安装VMware...
Cent OS上配置Apache2 + SVN Cent OS上配置Apache2 + SVN
solusvm+xen 搭建教程,在cent os 5.8 32bit 环境下
cent os cent os
【知识点详解】 在本文中,我们将探讨如何在CentOS服务器上配置JDK、Tomcat以及MySQL,这是一个典型的Java Web应用程序部署流程。 1. **连接服务器**: 首先,你需要通过SSH(Secure Shell)连接到你的CentOS...
在本文中,我们将深入探讨如何在Cent OS 6.5操作系统上编译Hadoop 2.6.0的源码,以及如何利用编译生成的lib包目录替换官方下载资源中的对应目录。这个过程对于那些希望自定义Hadoop配置、优化性能或解决特定环境下的...
虚拟机上安装 Cent-OS 全过程 本文将指导您在虚拟机上安装 Cent-OS 操作系统,总共包含 44 张截图,涵盖安装的每一个步骤。通过这篇文章,您将了解如何在虚拟机上安装 Cent-OS 操作系统,并掌握相应的安装步骤。 ...
申延超 Cent OS 5 Linux NFS 服务 安装
... Apache安装和配置 在CentOS系统中安装Apache需要下载Apache的源代码,使用wget命令下载...本文档提供了在CentOS系统中安装配置Apache、PHP和MySQL环境的详细步骤和配置参数,旨在帮助用户快速搭建Web开发环境。
本文档旨在详细介绍如何在CentOS 5操作系统上安装和配置Postfix与Extmail来搭建邮件服务器。Postfix是一款开源的MTA(邮件传输代理),以其高效稳定而闻名,被广泛应用于企业级邮件服务。Extmail则是一款基于Web的...
在本教程中,我们将深入探讨如何在Cent OS操作系统上安装并部署Redis,这是一个高效、开源的内存数据结构存储系统,常被用作数据库、缓存和消息代理。Redis以其高速性能和丰富的数据结构支持而备受青睐。以下是详细...
# CentOS安装 + MongoDB安装部署(单节点+副本集+分片)详细教程 ## 一、CentOS系统安装 在开始MongoDB的安装之前,首先需要确保你有一台运行CentOS的操作系统。以下是如何在CentOS上进行安装的步骤: ...
**6.2 修改 `/etc/profile` 文件** - 在 `/etc/profile` 文件末尾加入以下内容。 ``` if [ $USER = "oracle" ]; then if [ $SHELL = "/bin/bash" ]; then . $HOME/.bash_profile fi fi ``` #### 七、启动安装...
Cent OS 7、Nginx 1.6、PHP 5.6、MySQL 5.6开发环境搭建,源码编译安装_vagrant-lnmp
### Cent OS6.5安装Node.js详解 #### 标题:Cent OS6.5 安装nodeJS(分分钟搞定) #### 描述:本文将详细介绍如何在Cent OS6.5系统上快速安装Node.js。 #### 标签:node npm #### 内容概述 在本文中,我们将...
### CentOS7 下 PHP7 + NGINX + MySQL 环境搭建详解 #### 一、CentOS7 的安装与配置 ##### 基本安装流程 - **进入安装界面**:选择 "Install CentOS 7"。 - **选择安装语言**:推荐选择简体中文。 - **软件选择**...
【Cent OS 配置日志服务器和配置详解】 在IT管理中,日志服务器的配置是至关重要的,它能够集中收集、存储和分析来自不同系统的日志信息,从而提高故障排查效率,确保网络安全和合规性。本文将详细介绍如何在Cent ...