搭建一个采用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. centos8平台安装gitosis服务

    一,git服务器端:准备gitosis需要的各依赖软件 1,确认openssh是否存在?如不存在,以下列命令进行安装 [root@yjweb ~]# yum install openssh opens ...

  2. linux wget指定下载目录和重命名

    当我们在使用wget命令下载文件时,通常会需要将文件下载到指定的目录,这时就可以使用 -P 参数来指定目录,如果指定的目录不存在,则会自动创建. 示例: p.p1 { margin: 0; font: ...

  3. selenium-无窗口模式

    引入options即可 from time import sleep from selenium import webdriver from selenium.webdriver.chrome.opt ...

  4. Pytest之使用断言指定异常

    官网的翻译是使用断言抛出指定异常,当我觉得他这里更应该指的是 Pytest 断言错误类型# 使用raise在测试方法中指定异常的类型,这点和java还是蛮像的呢,具体示例如下: import pyte ...

  5. 如何在construct3上开发游戏&游戏展示

    前言 为了更快体验做出游戏的快乐,我们可以直接采用construct3 提供的游戏模板.这里我用的是基础模板中的塔防游戏.我们在这个的基础上加进来"植物大战僵尸"的一些元素,包括内 ...

  6. 556. 下一个更大元素 III

    556. 下一个更大元素 III 给定一个32位正整数 n,你需要找到最小的32位整数,其与 n 中存在的位数完全相同,并且其值大于n.如果不存在这样的32位整数,则返回-1. 示例 1: 输入: 1 ...

  7. CyclicBarrier(循环栅栏)

    CyclicBarrier public class CyclicBarrierDemo { public static void main(String[] args) { CyclicBarrie ...

  8. 关于隐私保护的英文论文的阅读—— How to read English thesis

    首先 开始我读论文时 也是恨不得吃透每个单词 但是后来转念一想 没必要每个单词都弄懂 因为 一些程度副词 修饰性的形容词等 这些只能增强语气罢了 对文章主题的理解并没有天大的帮助 而读文章应该首先把握 ...

  9. (CVPR 2019)The better version of SRMD

    CVPR2019的文章,解决SRMD的诸多问题, 并进行模拟实验. 进行双三次差值(bicubic)===>对应matlab imresize() %% read images im = {}; ...

  10. Java线程池的四种创建方式

    Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程. newFix ...