搭建一个采用lvs进行负载均衡的CTDB集群,整个集群的架构是采用如图所示

在上图所示的架构图中,后端采用的集群是我们的存储,集群存储的三个samba服务器的node在作为CTDB的节点的同时,也是运行着我们的内核客户端,将三个内核客户端挂载到后端的集群中,同时这三个samba客户端对外采用三个虚拟的IP,然后采用LVS的网络负载均衡技术,虚拟成一个对外的IP,这样就实现了samba的带宽聚合以及负载均衡。

第一步,搭建一个CTDB集群

一、配置环境

  • E5400采用2.6.39内核客户端挂在集群
IP:192.168.0.210
GW:192.168.1.1
NETMASK:255.255.0.0
samba node1
  • E5400采用2.6.39内核客户端挂在集群
IP:192.168.0.211
GW:192.168.1.1
NETMASK:255.255.0.0
samba node2
  • E5400采用2.6.39内核客户端挂在集群
IP:192.168.0.212
GW:192.168.1.1
NETMASK:255.255.0.0
samba node3

二、配置samba CTDB

1、在三个节点上使用如下命令安装samba,CTDB。

更新源以后执行

T02-APP210:~#apt-get update
T02-APP210:~#apt-get install samba ctdb

2、在三个节点的/etc/services文件中增加如下内容。

ctdb 9999/tcp

3、在三个节点中修改/etc/samba/smb.conf文件为如下内容,其中/smbcluster是后端集群存储系统的挂载点,/smbcluster/public为用户通过samba访问到的目录

[global]
clustering = yes
idmap backend = tdb2
private dir=/smbcluster/ctdb
fileid:mapping = fsname
use mmap = no
nt acl support = yes
ea support = yes
[public]
comment = public share
path = /smbcluster/public
public = yes
writeable = yes

4、在三个节点在修改/etc/default/ctdb文件的如下内容。

CTDB_RECOVERY_LOCK="/smbcluster/ctdb/lock"
CTDB_PUBLIC_INTERFACE=eth0
CTDB_PUBLIC_ADDRESSES=/etc/ctdb/public_addresses
CTDB_MANAGES_SAMBA=yes
ulimit -n 10000
CTDB_NODES=/etc/ctdb/nodes
CTDB_LOGFILE=/var/log/ctdb.log
CTDB_DEBUGLEVEL=2
CTDB_PUBLIC_NETWORK="192.168.0.0/24"
CTDB_PUBLIC_GATEWAY="192.168.1.1"

5、在三个节点在修改/etc/ctdb/public_addresses文件中增加如下内容,该文件记录Samba CTDB集群提供给客户访问的虚拟IP地址。

192.168.0.80/24
192.168.0.81/24
192.168.0.82/24

6、在三个节点上修改/etc/ctdb/nodes文件中增加如下内容,该文件记录Samba CTDB集群节点的IP地址。

192.168.0.210
192.168.0.211
192.168.0.212

7、在三个节点上修改/etc/ctdb/events.d/11.route文件中增加如下内容。

#!/bin/sh
. /etc/ctdb/functions
loadconfig ctdb
cmd="$1"
shift
case $cmd in
takeip)
# we ignore errors from this, as the route might be up already when we're grabbing
# a 2nd IP on this interface
/sbin/ip route add $CTDB_PUBLIC_NETWORK via $CTDB_PUBLIC_GATEWAY dev $1 2> /dev/null
;;
esac
exit 0

第二步:Lvs的配置及搭建

LVS是Linux Virtual Server的简写,意即Linux虚拟服务器是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。目前有三种IP负载均衡技术:VS/NAT、VS/TUN和VS/DR

十种调度算法(rrr|wrr|lc|wlc|lblc|lblcr|dh|sh|sed|nq)。

官方网站:www.linuxvirtualserver.org

本次采用的是三个samba服务器节点上做lvs的调度,其中一台既是虚拟主机,又是真实服务器,下面将介绍搭建lvs服务器的步骤

1.基础环境配置

三台samba节点分别配置IP为:

192.168.0.80	#这三个IP为之前CTDB配置的虚拟IP,publicaddress
192.168.0.81
192.168.0.82

2.下载和安装LVS

T02-APP210:~#apt-get install ipvsadm

3.配置虚拟IP服务和负载均衡

以192.168.0.11作为LVS的主机,为其设置一个虚拟IP作为samba服务器的接口

192.168.0.85为LVS主机的虚拟IP

LVS SERVER 配置

在192.168.0.11LVS虚拟服务器上执行:

设置本级的虚拟IP,作为LVS的虚拟IP

ifconfig eth0:0 192.168.0.85 netmask 255.255.0.0 broadcast 192.168.0.85 up

打开IP转发开关

echo 1>/proc/sys/net/ipv4/ip_forward

添加虚拟服务器,虚拟IP为192.168.0.85,端口为137,调度算法为rr

#! /bin/sh
ipvsadm -C
ipvsadm -A -u 192.168.0.85:137 -s rr
ipvsadm -A -u 192.168.0.85:138 -s rr
ipvsadm -A -t 192.168.0.85:139 -s rr
ipvsadm -A -t 192.168.0.85:445 -s rr ipvsadm -a -u 192.168.0.85:137 -r 192.168.0.81:137 -g
ipvsadm -a -u 192.168.0.85:137 -r 192.168.0.80:137 -g
ipvsadm -a -u 192.168.0.85:137 -r 192.168.0.82:137 -g ipvsadm -a -u 192.168.0.85:138 -r 192.168.0.82:138 -g
ipvsadm -a -u 192.168.0.85:138 -r 192.168.0.80:138 -g
ipvsadm -a -u 192.168.0.85:138 -r 192.168.0.81:138 -g ipvsadm -a -t 192.168.0.85:139 -r 192.168.0.80:139 -g
ipvsadm -a -t 192.168.0.85:139 -r 192.168.0.81:139 -g
ipvsadm -a -t 192.168.0.85:139 -r 192.168.0.82:139 -g ipvsadm -a -t 192.168.0.85:445 -r 192.168.0.82:445 -g
ipvsadm -a -t 192.168.0.85:445 -r 192.168.0.81:445 -g
ipvsadm -a -t 192.168.0.85:445 -r 192.168.0.80:445 -g

启动lvs

ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 192.168.91.9:http rr
-> 192.168.91.12:http Route 1 0 0
-> 192.168.91.11:http Route 1 0 0

在192.168.0.11虚拟服务器上运行查询命令

[root@hadoop00 ~]# ipvsadm -l --stats
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes
-> RemoteAddress:Port
TCP 192.168.0.80:http 0 0 0 0 0
-> 192.168.0.81:http 0 0 0 0 0
-> 192.168.0.82:http 0 0 0 0 0

在真实服务器上执行下列脚本

#! /bin/sh
/sbin/ifconfig lo:0 192.168.0.91 broadcast 192.168.0.91 netmask 255.255.255.255 up
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

到这里整个集群就搭建成功,挂载samba服务器即可

参考文档:

http://zh.linuxvirtualserver.org/node/5

http://zp820705.iteye.com/blog/1151921

http://onlyzq.blog.51cto.com/1228/593940/

更新历史

why when
创建 2011年12月10日
更新 2019年12月9日

CTDB与LVS搭建集群的更多相关文章

  1. RHEL6 搭建 keepalived + lvs/DR 集群

    搭建 keepalived + lvs/DR  集群 使用Keepalived为LVS调度器提供高可用功能,防止调度器单点故障,为用户提供Web服务: LVS1调度器真实IP地址为192.168.4. ...

  2. 用apache和tomcat搭建集群,实现负载均衡

    型的企业应用每天都需要承受巨大的访问量,在着巨大访问量的背后有数台服务器支撑着,如果一台服务器崩溃了,那么其他服务器可以使企业应用继续运行,用户对服务器的运作是透明化的,如何实现这种透明化呢?由如下问 ...

  3. ELK——Elasticsearch 搭建集群经验

    本文内容 背景 ES集群中第一个master节点 ES slave节点 本文总结 Elasticsearch(以下简称ES)搭建集群的经验.以 Elasticsearch-rtf-2.2.1 版本为例 ...

  4. redis 一二事 - 搭建集群缓存服务器

    在如今并发的环境下,对大数据量的查询采用缓存是最好不过的了,本文使用redis搭建集群 (个人喜欢redis,对memcache不感冒) redis是3.0后增加的集群功能,非常强大 集群中应该至少有 ...

  5. Hadoop化繁为简-从安装Linux到搭建集群环境

    简介与环境准备 hadoop的核心是分布式文件系统HDFS以及批处理计算MapReduce.近年,随着大数据.云计算.物联网的兴起,也极大的吸引了我的兴趣,看了网上很多文章,感觉还是云里雾里,很多不必 ...

  6. Linux+.NetCore+Nginx搭建集群

    本篇和大家分享的是Linux+NetCore+Nginx搭建负载集群,对于netcore2.0发布后,我一直在看官网的文档并学习,关注有哪些新增的东西,我,一个从1.0到2.0的跟随者这里只总结一句话 ...

  7. Redis 实战篇之搭建集群

    Redis 集群简介# Redis Cluster 即 Redis 集群,是 Redis 官方在 3.0 版本推出的一套分布式存储方案.完全去中心化,由多个节点组成,所有节点彼此互联.Redis 客户 ...

  8. Nginx+Tomcat搭建集群,Spring Session+Redis实现Session共享

    小伙伴们好久不见!最近略忙,博客写的有点少,嗯,要加把劲.OK,今天给大家带来一个JavaWeb中常用的架构搭建,即Nginx+Tomcat搭建服务集群,然后通过Spring Session+Redi ...

  9. 复制虚拟机vmware centos搭建集群节点过程中网络配置eth0和eth1遇到的问题以及NAT模式下虚拟机静态IP配置方法

    在centos中安装完第一个虚拟机后,一般习惯通过克隆的方式创建其它虚拟机,开后vmware无法发现网卡信息,系统认为这是重新安装,所以重新创建了一个新的网卡叫eth1. 并且用IFCONFIG-a查 ...

随机推荐

  1. PO模式学习笔记

    框架: 1.PO模式应用(测试对象和测试用例分离)(写到简历中) 2.引入ddt 3.深入分层:测试数据分离 4.遵循原则:测试用例的独立性 5.深入分层:元素定位分离 6.框架优化:提取basepa ...

  2. centos8安装RabbitMQ

    一.安装erlang # 添加仓库 curl -s https://packagecloud.io/install/repositories/rabbitmq/erlang/script.rpm.sh ...

  3. xpath取其中几个使用position

    from lxml import etree html = ''' <!DOCTYPE html> <html lang="en"> <head> ...

  4. mongodb安装及使用

    安装命令: sudo apt-get install mongodb 开始认证,创建用户: 编辑配置文件: sudo vim /etc/mongodb.conf 11行中的 bind_ip值 修改成为 ...

  5. javaSE、javaEE、Android知识点总结

    曾今上学时候的一些学习总结,如有错误请大家指出,共同学习. 1. 什么是WebView? WebView是一个使用WebKit引擎的浏览器组件,用来加载网页. 2. WebView中加载网页的两种方式 ...

  6. centos搭建离线epel源

    准备 有一个联网的机器,并已经配置好epel源 安装reposync和createrepo命令 yum install yum-utils #reposync在这里 yum install creat ...

  7. 一份超全的Python学习资料汇总

    一.学习Python必备技能图谱二.0基础如何系统学习Python?一.Python的普及入门1.1 Python入门学习须知和书本配套学习建议1.2 Python简史1.3 Python的市场需求及 ...

  8. 正式班D14

    2020.10.23星期五 正式班D14 9.5 文件处理三剑客(支持|) 9.5.1 sed流式编辑器 事先制定好编辑文件的指令,让sed自动完成对文件的整体编辑(同一时间内存中只有文件中一条) # ...

  9. 关于Python的面相对象编程

    Python 其实不是面向对象的语言,更像是C语言的面向过程编程的语言 但 Python 也支持 class 关键字来实现类的声明与创建 但 Python 的对象更像是 JavaScript 的函数 ...

  10. Spring MVC json配置

    接口类的Controller,一般返回的是json数据,而Spring MVC中默认返回的string,而jsp页面的话,会按配置中自己行匹配转义字符串为对应的jsp文件. @Controller @ ...