‘壹’ Kafka相关内容总结(Kafka集群搭建手记)
Kafka is a distributed,partitioned,replicated commit logservice。它提供了类似于JMS的特性,但是在设计实现上完全不同,此外它并不是JMS规范的实现。kafka对消息保存时根据Topic进行归类,发送消息者成为Procer,消息接受者成为Consumer,此外kafka集群有多个kafka实例组成,每个实例(server)成为broker。无论是kafka集群,还是procer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。
入门请参照: https://www.ibm.com/developerworks/cn/opensource/os-cn-kafka/index.html
在此不再赘述。
这部分不是本文的重点,但是kafka需要用到kafka集群,所以先搭建kafka集群。
从kafka官方文档看到,kafka似乎在未来的版本希望抛弃zookeep集群,自己维护集群的一致性,拭目以待吧。
我们搭建集群使用的是三台同机房的机器,因为zookeeper不怎么占资源也不怎么占空间(我们的业务目前比较简单),所以三台机器上都搭建了zookeeper集群。
搭建zookeeper集群没什么难度,参考文档: http://www.cnblogs.com/huangxincheng/p/5654170.html
下面列一下我的配置并解析:
一共用三台物理机器,搭建一个Kafka集群。
每台服务器的硬盘划分都是一样的,每个独立的物理磁盘挂在一个单独的分区里面,这样很方便用于Kafka多个partition的数据读写与冗余。
/data1比较小,为了不成为集群的瓶颈,所以/data1用于存放kafka以及Zookeeper
每台机器的磁盘分布如下:
下面是kafka的简单配置,三台服务器都一样,如有不一致的在下文有说明。
kafka安装在目录/usr/local/kafka/下,下面的说明以10.1.xxx.57为例。
最重要的配置文件server.properties,需要配置的信息如下:
从上面的配置看到,kafka集群不需要像hadoop集群那样,配置ssh通讯,而且一个kafka服务器(官方文档称之为broker,下面统一使用这个称呼)并不知道其他的kafka服务器的存在,因此你需要逐个broker去启动kafka。各个broker根据自己的配置,会自动去配置文件上的zk服务器报到,这就是一个有zk服务器粘合起来的kafka集群。
我写了一个启动脚本,放在 /usr/local/kafka/bin 下面。启动脚本每个broker都一样:
如同kafka集群里面每一个broker都需要单独启动一样,kafka集群里面每一个broker都需要单独关闭。
官方给出的关闭脚本是单独运行 bin/kafka-server-stop.sh
但是我运行的结果是无法关闭。打开脚本一看,才发现是最简单的办法,发一个TERM信号到kafka的java进程,官方脚本给出的grep有点问题。
发信号之后,一直tail着kafka日志,看到正常关闭。
指定zookeeper服务器,topic名称是LvsKafka(注意topic名称不能有英文句号(.)和下划线(_),否则会通不过,理由是名称会冲突,下文对此略有解析)
replication-factor指出重复因子是2,也就是每条数据有两个拷贝,可靠性考虑。
partitions 指出需要多少个partition,数据量大的多一点,无论生产和消费,这是负载均衡和高并发的需要。
可以看到刚才新建的24个partition,比如partition 5, 他的leader是broker 59,也就是10.1.xxx.59这台机器。
建立topic时我们指出需要2个拷贝,从上面的输出的Replicas字段看到,这两个拷贝放在59,58两个机器,也就是10.1.xxx.59和10.1.xxx.58.
Isr表示当前partition的所有拷贝所在的机器中,哪些是还活着(可以提供服务)的。现在是59和58都还存活。
这个命令另外还会看到一些类似于下面的内容:
__consumer_offsets到底是什么呢?其实就是客户端的消费进度,客户端会定时上报到kafka集群,而kafka集群会把每个客户端的消费进度放入一个自己内部的topic中,这个topic就是__consumer_offsets。我查看过__consumer_offsets的内容,其实就是每个客户端的消费进度作为一条消息,放入__consumer_offsets这个topic中。
这里给了我们两个提示:
1、kafka自己管理客户端的消费进度,而不是依靠zk,这就是kafka官方文档说的kafka未来会抛弃zk的底气之一;
2、留意到这个kafka自己的topic是带下划线的,也就是,kafka担心我们自己建的topic如果带下划线的话会跟这些内部自用的topic冲突;
‘贰’ 如何在一台ESXi主机上搭建一整套VSAN集群的环境
就来介绍下如何在一台ESXi主机上配置3个ESXi并组建一个VSAN集群。昨天,我介绍了如何在一台ESXi主机上安装ESXi的客户机(当然这些ESXi本身也是主机哦,还可以在其上部署虚拟机,虽然性能会比较差)。因此,首先就是根据上面所说的硬件条件创建3个虚拟机用来安装ESXi5.5u1。我的配置是每一台主机都包括:
4个CPU(最少2个)
8GB内存
3个硬盘,一个4GB(用来装系统)、一个40GB(模拟成SSD)、一个400GB(提供给vsan存放数据)
2个网络适配器,一个在子网192.168.10.x用于管理和虚拟机网络,一个在子网192.168.20.x,用于VSAN VMkernel
虚拟机版本10
注意,为了让ESXi客户机有2个网络适配器,在ESXi主机(本例中起名为esxi01)上的网络配置至少要配置2个不同的端口组,我将这2个端口组分别配置在了2个不同的vSwitch上:
vSwitch0,默认vSwitch,配置有管理网络(VMKernel)和VM Network 10端口组
vSwitch2,新增的vSwitch,配置有VM Network 20端口组
此外,我还因为有iSCSI存储,因此配置了2个iSCSI的VMKernel分别在vSwitch1和vSwitch2上。
vSwitch0和vSwitch2的配置截图如下:
这里有一点要说明的是,如果仅为了vsan网络的通信,vSwitch2可以没有上联的物理适配器,我的截图里面配置了上联的物理适配器是因为我还有一个iSCSI2的VMkernel需要使用。
安装3台虚拟机的过程就不赘述了,只要你按照我昨天的文章来操作,就可以顺利完成。安装完之后,照例是配置静态IP地址、FQDN主机名、禁用IPv6、DNS并开启SSH和ESXi SHELL以备之后在控制台输入命令行使用。
需要强调一次的是,在你的实验网络中,需要配置好一台域控制器,它同时也是DNS服务器,并事先在DNS服务器里面添加好静态的ESXi主机的DNS项。在我的实验环境中,它们是:
esxi55u01.home.lab – 192.168.10.31
esxi55u02.home.lab – 192.168.10.32
esxi55u03.home.lab – 192.168.10.33
请在黄色DCUI界面(安装完ESXi主机的初次配置界面)里面测试一下网络,如果主机域名也能顺利解析,那就说明网络配置都完备了。DNS对于正确配置VMware集群来说非常重要。
接下去就是用vSphere Web客户端再次连接到vCenter(我的是vCSA),把这几台新安装的ESXi主机添加进来,添加的时候要用FQDN,不能是IP地址。
现在让我们来看一看这些ESXi主机的磁盘情况(左边窗格点选主机,在右边窗格分别选择管理,存储器和存储设备,如图所示),可以看见置备的3个磁盘都是非SSD。下面要克服的问题是怎样欺骗ESXi,让它以为其中一块40GB的磁盘是SSD,这样才能满足VSAN配置的必要前提条件。
让我们进入到这台vSphere ESXi主机的管理控制台界面,在命令行里面输入下面的2条命令,就可以完成:
# esxcli storage nmp satp rule add --satp VMW_SATP_LOCAL --device mpx.vmhba1:C0:T1:L0 --option=enable_ssd
# esxcli storage core claiming reclaim -d mpx.vmhba1:C0:T1:L0
注意,这里的设备ID要填写你所想要变成SSD的那个磁盘,设备ID就是长的像mpx.vmhba1.C0:T1:L0的那个。
输入命令后,如果没有填错,是不返回结果的。回到vSphere Web客户端,刷新一下,你就会发现那个40GB的磁盘的类型变成SSD了。
关于VSAN的配置,LeoXiao同学写的很不错,就不多罗嗦了。你可以参考他的文章。
我借个图说明下顺序:
多说一句,为了测试NIOC功能,而这个功能只有在分布式交换机上才有,所以,建议VSAN集群配置的时候先配置好分布式交换机,并且把VSAN专用的VMkernel建在分布式交换机上。
最后,给大家看一下,要搭建一个VSAN集群的测试环境,在一台主机上至少要配置并开启5台虚拟机——包括1台域控制器,1台vCenter和3台ESXi主机(每台都配了8GB内存哦)。
虽然还是有一些网络传输上不稳定的问题,不过vsan数据存储好歹是建起来了。
‘叁’ 如何最快搭建linux服务器集群
1.2.并行技术
这是一个非常简单的建造四节点的小集群系统的例子,它是构建在Linux操作系统上,通过MPICH软件包实现的,希望这个小例子能让大家对集群系统的构建有一个最基本的了解。
2.使用MPICH构建一个四节点的集群系统
这是一个非常简单的建造四节点的小集群系统的例子,它是构建在Linux操作系统上,通过MPICH软件包实现的,希望这个小例子能让大家对集群系统的构建有一个最基本的了解。
2.1 所需设备
1).4台采用Pentium II处理器的PC机,每台配
置64M内存,2GB以上的硬盘,和EIDE接口的光盘驱动器。
2).5块100M快速以太网卡,如SMC 9332 EtherPower 10/100(其中四块卡用于连接集群中的结点,另外一块用于将集群中的其中的一个节点与其它网络连接。)
3).5根足够连接集群系统中每个节点的,使用5类非屏蔽双绞线制作的RJ45缆线
4).1个快速以太网(100BASE-Tx)的集线器或交换机
5).1张Linux安装盘
2.2 构建说明
对计算机硬件不熟的人,实施以下这些构建步骤会感到吃力。如果是这样,请找一些有经验的专业人士寻求帮助。
1. 准备好要使用的采用Pentium II处理器的PC机。确信所有的PC机都还没有接上电源,打开PC机的机箱,在准备与网络上的其它设备连接的PC机上安装上两块快速以太网卡,在其它的 PC机上安装上一块快速以太网卡。当然别忘了要加上附加的内存。确定完成后盖上机箱,接上电源。
2. 使用4根RJ45线缆将四台PC机连到快速以太网的集线器或交换机上。使用剩下的1根RJ45线将额外的以太网卡(用于与其它网络相连的那块,这样机构就可以用上集群)连接到机构的局域网上(假定你的机构局域网也是快速以太网),然后打开电源。
3. 使用LINUX安装盘在每一台PC机上安装。请确信在LINUX系统中安装了C编译器和C的LIB库。当你配置TCP/IP时,建议你为四台PC分别指定为192.168.1.1、192.168.1.2、192.168.1.3、192.168.1.4。第一台PC为你的服务器节点(拥有两块网卡的那台)。在这个服务器节点上的那块与机构局域网相连的网卡,你应该为其指定一个与机构局域网吻合的IP地址。
4.当所有PC都装好Linux系统后,编辑每台机器的/etc/hosts文件,让其包含以下几行:
192.168.1.1 node1 server
192.168.1.2 node2
192.168.1.3 node3
192.168.1.4 node4
编辑每台机器的/etc/hosts.equiv文件,使其包含以下几行:
node1
node2
node3
node4
$p#
以下的这些配置是为了让其能使用MPICH’s p4策略去执行分布式的并行处理应用。
1. 在服务器节点
,建一个/mirror目录,并将其配置成为NFS服务器,并在/etc/exports文件中增加一行:
/mirror node1(rw) node2(rw) node3(rw) node4(rw)
2. 在其他节点上,也建一个/mirror目录,关在/etc/fstab文件中增加一行:
server:/mirror /mirror nfs rw,bg,soft 0 0
3. /mirror这个目录从服务器上输出,装载在各个客户端,以便在各个节点间进行软件任务的分发。
4. 在服务器节点上,安装MPICH。MPICH的文档可在
5.任何一个集群用户(你必须在每一个节点新建一个相同的用户),必须在/mirror目录下建一个属于它的子目录,如 /mirror/username,用来存放MPI程序和共享数据文件。这种情况,用户仅仅需要在服务器节点上编译MPI程序,然后将编译后的程序拷贝到在/mirror目录下属于它的的子目录中,然后从他在/mirror目录下属于它的的子目录下使用p4 MPI策略运行MPI程序。
2.3 MPICH安装指南
1.如果你有gunzip,就d下载mpich.tar.gz,要不然就下载mpich.tar.Z。你可以到http://www.mcs.anl.gov/mpi/mpich/downloa下载,也可以使用匿名FTP到ftp.mcs.anl.gov的pub/mpi目录拿。(如果你觉得这个东西太大,你可以到pub/mpi/mpisplit中取分隔成块的几个小包,然后用cat命令将它们合并)
2.解压:gunzip ;c mpich.tar.gz tar xovf-(或zcat mpich.tar.Ztar xovf-)
3.进入mpich目录
4.执行:./configure为MPICH选择一套适合你的实际软硬件环境的参数组,如果你对这些默认选择的参数不满意,可以自己进行配置(具体参见MPICH的配置文档)。最好选择一个指定的目录来安装和配置MPICH,例如:
./configure -prefix=/usr/local/mpich-1.2.0
5.执行:make >&make.log 这会花一段较长的时间,不同的硬件环境花的时间也就不同,可能从10分钟到1个小时,甚至更多。
6.(可选)在工作站网络,或是一台单独的工作站,编辑mpich/util/machines/machines.xxx(xxx是MPICH对你机器体系结构取的名称,你能很容易的认出来)以反映你工作站的当地主机名。你完全可以跳过这一步。在集群中,这一步不需要。
7.(可选)编译、运行一个简单的测试程序:
cd examples/basic
make cpi
ln ;s ../../bin/mpirun mpirun
./mpirun ;np 4 cpi
此时,你就在你的系统上运行了一个MPI程序。
8.(可选)构建MPICH其余的环境,为ch_p4策略使
用安全的服务会使得任何启动速度加快,你可以执行以下命令构建:
make serv_p4
(serv_p4是一个较新的P4安全服务的版本,它包含在MPICH 1.2.0版中),nupshot程序是upshot程序的一个更快版本,但他需要tk 3.6版的源代码。如果你有这个包,你就用以下命令可以构建它:
make nupshot
9.(可选)如果你想将MPICH安装到一个公用的地方让其它人使用它,你可以执行:
make install 或 bin/mpiinstall
你可以使用-prefix选项指定MPICH安装目录。安装后将生成include、lib、bin、sbin、www和man目录以及一个小小的示例目录,
到此你可以通告所有的用户如何编译、执行一个MPI程序。
‘肆’ 如何搭建服务器集群
可以通过两种方法创建集群:1.创建一个集群,并同时创建若干个云服务器。可以通过容器服务直接创建一个包含若干个新云服务器的集群。2.创建一个零节点的集群并添加已有的云服务器。创建一个零节点的集群。如果您已经在云服务器 ECS 上购买了若干个云服务器,可以在容器服务上创建一个零节点的集群。
‘伍’ Linux系统 CentOS 7怎么搭建集群
CentOS 7下怎么搭建高可用集群。高可用集群是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断提供的服务,把因软件/硬件/人为造成的故障对业务的影响降低到最小程度。那么新的centos下怎么来搭建高可用集群。环境:本文以两台机器实现双集热备高可用集群,主机名node1的IP为192.168.122.168 ,主机名node2的IP为192.168.122.169 。
一、安装集群软件必须软件pcs,pacemaker,corosync,fence-agents-all,如果需要配置相关服务,也要安装对应的软件
二、配置防火墙
1、禁止防火墙和selinux
修改/etc/sysconfig/selinux确保SELINUX=disabled,然后执行setenforce 0或者reboot服务器以生效
2、设置防火墙规则
三、各节点之间主机名互相解析分别修改2台主机名分别为node1和node2,在centos 7中直接修改/etc/hostname加入本机主机名和主机表,然后重启网络服务即可。
配置2台主机的主机表,在/etc/hosts中加入
四、各节点之间时间同步在node1和node2分别进行时间同步,可以使用ntp实现。
五、各节点之间配置ssh的无密码密钥访问。下面的操作需要在各个节点上操作。
两台主机都要互相可以通信,所以两台主机都得互相生成密钥和复制公钥,相互的节点上的hosts文件是都要解析对方的主机名, 192.168.122.168 node1 192.168.122.169 node2
六、通过pacemaker来管理高可用集群
1、创建集群用户
为了有利于各节点之间通信和配置集群,在每个节点上创建一个hacluster的用户,各个节点上的密码必须是同一个。
‘陆’ 如何建立服务器集群及相关问题
集群准备工作N多,看你的具体需求而定,一般情况如下:
1、节点服务器,域,节点服务器必须在同一域内;
2、共享存储,最次也得一个NAS吧;
3、节点服务器的双网卡,共享存储一块,服务器通讯一块;
4、域相关设置,比如集群管理帐户等;
具体安装比较简单,add
feature(添加功能),集群功能。
安装后需要先验证安装,开始菜单--〉管理工具--〉故障转移集群管理,验证过程中输入节点服务器IP或者域名(域内DNS注册以后)--〉运行全部测试,最后查看报告,根据报告修改、配置集群。一切正常以后,开始正式配置集群;