搭建一个采用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. 【C语言学习笔记系列】C语言编程狼追兔子问题代码解析!

    问题描述 一只兔子躲进了10个环形分布的洞中的一个.狼在第一个洞中没有找到兔子,就隔一个洞,到第3个洞去找:也没有找到,就隔2个洞,到第6个洞去找:以后每次多一个洞去找兔子--这样下去,如果一直找不到 ...

  2. 【KM算法】UVA 11383 Golden Tiger Claw

    题目大意 给你一个\(n×n\)的矩阵G,每个位置有一个权,求两个一维数组\(row\)和\(col\),使\(row[i] + col[j]\ge G[i][j]\),并且\(∑row+∑col\) ...

  3. 生物信息-McScan(Python-jcvi)共线性画图

    比较基因组学中,共线性的分析的图无疑是最漂亮的. 共线性分析可以很好地解释进化关系和多倍化事件. 本文主要介绍的是唐老师的Python版McScan(jcvi工具包),这个包很强大,但是其功能在官网的 ...

  4. spring boot:用itextpdf处理pdf表格文件(spring boot 2.3.2)

    一,什么是itextpdf? 1,itextpdf的用途 itextpdf是用来生成PDF文档的一个java类库, 通过iText可以生成PDF文档, 还可以把XML/Html文件转化为PDF文件 2 ...

  5. centos8上添加sudoer用户

    一,检查服务器是否已安装sudo的rpm包? 1,查询rpm包列表 [root@yjweb ~]# rpm -qa | grep sudo libsss_sudo-2.0.0-43.el8_0.3.x ...

  6. Helium文档2-WebUI自动化-常用方法介绍

    学习思路: 查看github项目的源码,每个方法都有介绍及使用说明 https://github.com/mherrmann/selenium-python-helium/blob/master/he ...

  7. java反射原来是这么玩的(反射一开,谁都不爱)

    反射的发展历史 1996年01月23日,jdk 1.0版本发布,代号为Oak(橡树). 这个代号为Oak(橡树)的版本,在发布后的第二年,1997年02月19日,发布jdk 1.1版本,这次版本发布中 ...

  8. 如果只推荐一本 Python 书,我要 Pick 它!

    今年二月初,我偶然看到了一条推特: <流畅的Python>一书的作者发布了一条激动人心的消息:他正在写作第二版! 如果要票选最佳的 Python 进阶类书目,这本书肯定会是得票率最高的书籍 ...

  9. Azure Cosmos DB (四) 使用EF的SQL API 异地冗余

    一,引言 上一篇文章中,我们介绍到使用了EF Core 与Cosmos DB SQL API 进行结合开发.同时,大家在开发过程中一定要记得EF Core 不支持Cosmos DB 的迁移.今天我们启 ...

  10. 关于cookie与本地 存储的区别的问题。

    关于cookie与本地 存储的区别的问题. 1. cookie在浏览器和服务器间来回传递.而sessionStorage和localStorage不会自动把数据发给服务器,仅在本地保存. 2. coo ...