Chinaunix首页 | 论坛 | 博客
  • 博客访问: 5539
  • 博文数量: 4
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 51
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-13 11:36
  • 认证徽章:
个人简介

23212740 欢迎加我QQ讨论~

文章分类

全部博文(4)

文章存档

2016年(4)

我的朋友

分类: 系统运维

2016-10-27 20:28:41

1.  什么是集群?

简单的说?集群?cluster?就是一组计算机?它们作为一个整体向用户提

供一组网络资源。这些单个的计算机系统就是集群的节点?node

一个理想的集群是?用户从来不会意识到集群系统底层的节点?在他/她们看来?集群是一个系统?而非多个计算机系统。并且集群系统的管理员可以随意增加和删改集群系统的节点。

 

2. 实验环境

1>     业务网,虚拟机 172.25.0.0网段

2>     存储,虚拟机中192.168.1.0网段

3>     存储,虚拟机中192.168.2.0网段

4>     心跳线,虚拟机中192.168.0.0网段

5>     实验环境红帽官方可下载

 

 

红帽6 集群工具: luci

 

红帽7 集群工具: pcs

 

 

nodea:

yum -y install pcs

systemctl stop firewalld

systemctl disable firewalld

systemctl start pcsd

systemctl enable pcsd

(安装pcs以后会有一个hacluster)

echo redhat | passwd --stdin hacluster

 

以下在任意节点输入都一样

pcs cluster auth nodea.cluster0.example.com nodeb.cluster0.example.com nodec.cluster0.example.com

Username: hacluster

Password: redhat    需要输入的部分

 

pcs cluster status  查看当前集群状态

crm_mon -1  查看当前集群状态

pcs cluster stop nodea.cluster0.exampele.com  停止nodea节点

pcs cluster start nodea.cluster0.example.com  启动nodea节点

pcs cluster stop all  停止所有节点

pcs cluster enable --all  开启节点永久生效

pcs cluster disable --all  关闭节点永久生效

 

 

现在创建一个vip(虚拟ip):

选择RESOURCE选项卡, 点击ADD 添加资源

 

Resource ID: vip

ip: 172.25.0.100

 

ip addr  查看当前所有ip的详细信息(包括子ip)

 

pcs cluster standby nodea.cluster0.example.com  模拟nodea坏了

pcs cluster unstandby nodea.cluster0.example.com  模拟nodea好了

pcs resource move vip nodea.cluster0.example.com  将vip移动到nodea节点

 

corosync-quorumtool -l  显示所有节点信息(包括票数Votes)

 

quorum=N(机器总数(若是奇数, 则quorum=N/2+1)(quorum是存活要素)

 

如何推翻quorum的限制:

vim /etc/corosync/corosync.conf  票数总数的配置文件

    quorum_votes: 3    修改某个节点的 票数

    :wq

 

pcs cluster stop --all

pcs cluster sync  集群间的同步

pcs cluster start --all

(在企业中间, 不建议更改票数)

 

 

 

 

 

nodeb:

yum -y install pcs

systemctl stop firewalld

systemctl disable firewalld

systemctl start pcsd

systemctl enable pcsd

(安装pcs以后会有一个hacluster)

echo redhat | passwd --stdin hacluster

 

 

 

nodec:

yum -y install pcs

systemctl stop firewalld

systemctl disable firewalld

systemctl start pcsd

systemctl enable pcsd

(安装pcs以后会有一个hacluster)

echo redhat | passwd --stdin hacluster

 

 

 

foundation:

firefox https://nodea.cluster0.example.com:2224

Username: hacluster

Password: redhat

 

create new

Cluster Name: cluster1

Node1: nodea.cluster0.example.com

Node2: nodeb.cluster0.example.com

Node3: nodec.cluster0.example.com

...

 

(没有使用fence的时候, 将cluster propetries选项中的stonith enabled勾去掉)

 

 

No Quorum Policy: 集群存活的要素

脑裂: 节点间由于某种原因无法回复心跳, 导致的抢占资源的现象

 

fence分为两种: 线缆fence, 电源fence

 

virbr0: 用于物理机和kvm虚拟机之间进行通信的平台

 

nodea:

yum -y install fence-virt*  安装fence驱动

mkdir /etc/cluster 

systemctl restart fence_virtd

 

 

 

nodeb:

yum -y install fence-virt*

mkdir /etc/cluster

systemctl restart fence_virtd

 

pcs stonith fence nodea  手动fence节点nodea

 

 

 

 

nodec:

yum -y install fence-virt*

mkdir /etc/cluster

systemctl restart fence_virtd

foundation:

yum -y install fence-virt*

mkdir /etc/cluster

cd /etc/cluster

dd if=/dev/zero of=fence_xvm.key bs=4k count=1  创建一个钥匙

fence_virtd -c 初始化设备

    Interface[virtbr0]: br0  实际企业环境中这个写心跳网络的接口

 

 

scp /etc/cluster/fence_xvm.key root@nodea:/etc/cluster

scp /etc/cluster/fence_xvm.key root@nodeb:/etc/cluster

scp /etc/cluster/fence_xvm.key root@nodec:/etc/cluster

systemctl restart fence_virtd

systemctl enable fence_virtd

 

 

首先勾选stonith选项, 选择stonith action的方式, 修改Cluster Delay(等待时间)

然后切换到网页上fence devices选项卡, 选择Add

type选择fence_xvm

Fence instance Name: 填写这个fence的名字, 创建fence

因为我们是虚拟的fence, 所以我们选择Advanced Arguments(高级参数)

写上pcmk_host_list: nodea,nodeb,nodec(写kvm虚拟机名称, 不是主机名)

高可用: 保证业务不断

 

lsb: 集群的一个标准(老标准)

ocf: 新的标准

 

 

页面上创建资源, Class选择ocf:heartbeat, Type选择IPaddr2, Resource ID: vip, Optional Arguments中是一些参数

 

standby表示将此机器拉到100%,(模拟的)

 

failback: 资源的轮转

 

在资源中, Resource Location Preferences中可以设置节点或规则(node/rule), 其中score代表优先级(数字越大越高)

 

在Resource Meta Attributes中可以设置一些参数, 参数要背

 

NONE: resource-stickiness  Value: 100 (表示优先级)  这个参数的值决定资源是否会回飘(其中Value值的INFINTY表示无限大)

当元属性中的此参数的Value的值加上资源的备份机(即当前的nodeb的Score的值, 如果不大于(不包括等于)主节点nodea的Score的值, 则资源在主节点故障消除以后会移动到主节点.

 

NONE: is-managed  Value: false 这个参数为false代表着此资源不随着集群飘

 

NONE: priority  Value: (数字)      这个参数会去比较所有资源的这个值, 如果这个值是最低的, 那就会放弃掉这个值, 那么此服务就会被down掉

 

在集群环境中, 搭建的所有服务都不需要启动, 服务都由集群控制

 

 

资源绑定:

 

nodea:

yum -y install httpd

 

nodeb:

yum -y install httpd

 

nodec:

yum -y install httpd

 

安装完httpd后, 在集群的资源中添加资源, 选择systemd, Type中选择httpd, 添加Resource ID, 创建资源

然后在资源中创建一个Group, 需要先勾选再添加Group, (注意, 在勾选的时候没有全选的说法, 而且, 还需要安装访问顺序进行勾选)

 ISCSI共享

先配noded, 在配nodea,b,c, 关机先关nodea, 同理, 开机先开nodec,开机一定要等noded开启完毕

 

 

nodea:

yum -y install iscsi-init*

 

vim /etc/iscsi/initiatorname.iscsi

    InitiatorName=iqn.2016-09.com.example:node

    :wq

 

systemctl restart iscsid

systemctl restart iscsi

 

# 双线备份

iscsiadm -m discovery -t sendtargets -p 192.168.1.13   

iscsiadm -m node -T iqn.2016-09.com.example:storage -p 192.168.1.13 -l    # 映射过来是sda

 

iscsiadm -m discovery -t sendtargets -p 192.168.2.13

iscsiadm -m node -T iqn.2016-09.com.example:storage -p 192.168.2.13 -l    # 映射过来是sdb

 

# 双线备存在的问题就是硬盘名字不同, 资源飘逸后的名字不同

 

# 做多路径:

yum -y install device-mapper-multipath

systemctl enable multipathd

systemctl restart multipathd

multipath -l     # 查看多路径运行状态, 发现dm_multipath模块未加载

lsmod | grep dm_multipath    # 查看加载的模块

modprobe dm_multipath    # 加载模块, 临时生效

 

vim /etc/rc.d/rc.local

    modprobe dm_multipath     # 设置模块永久加载

    :wq

 

rhel 7 默认没有给/etc/rc.d/rc.local执行权限, 所以需要给文件添加执行权限

 

复制默认配置文件到/etc下:

cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc

 

systemctl restart multipathd

multipath -l    # 即可查看到软件自动扫描后对相同uuid的设备生成的设备名(mpatha)

fdisk /dev/mapper/mpatha    # 模拟出来的设备在/dev/mapper下

 

vim ~/.bash_profile

    PATH:$PATH:$HOME/bin:/usr/lib/udev    # 为了能使用scsi_id命令

    :wq

 

scsi_id -u -g /dev/sda    # 查看scsi设备id

 

vim /etc/multipath.conf

    user_friend_names yes    # 表示多路径会自动生成一个名字

    user_friend_names no    # 不让它自动生成

    find_multipaths yes    # 表示会检测多路径的配置文件是否完整

 

    multipaths {

        multipath {

            wwid    设备id

            alias    mydisk

        }

    }

 

    :wq

 

在/etc/multipath目录下有个wwids文件, 里面是自动识别多路径的设备的id号

systemctl restart multipathd

 

fdisk /dev/mapper/mydisk

...

partprobe /dev/mapper/mydisk

mkfs.xfs /dev/mapper/mydisk1

 

 

 

 

# 取消iscsi连接

iscsiadm -m node -T iqn.2016-09.com.example:storage -p 192.168.2.13 -u    # 当前断掉

iscsiadm -m node -U all    # 当前断掉所有

iscsiadm -m node -T iqn.2016-09.com.example:storage -p 192.168.2.13 -o delete    # 永久断掉

 

 

 

nodeb:

yum -y install iscsi-init*

 

vim /etc/iscsi/initiatorname.iscsi

    InitiatorName=iqn.2014-09.com.example:node

    :wq

 

systemctl restart iscsid

systemctl restart iscsi

 

# 双线备份

iscsiadm -m discovery -t sendtargets -p 192.168.1.13   

iscsiadm -m node -T iqn.2016-09.com.example:storage -p 192.168.1.13 -l

 

iscsiadm -m discovery -t sendtargets -p 192.168.2.13

iscsiadm -m node -T iqn.2016-09.com.example:storage -p 192.168.2.13 -l

 

 

# 做多路径:

yum -y install device-mapper-multipath

systemctl enable multipathd

systemctl restart multipathd

multipath -l     # 查看多路径运行状态, 发现dm_multipath模块未加载

lsmod | grep dm_multipath    # 查看加载的模块

modprobe dm_multipath    # 加载模块, 临时生效

 

vim /etc/rc.d/rc.local

    modprobe dm_multipath     # 设置模块永久加载

    :wq

 

rhel 7 默认没有给/etc/rc.d/rc.local执行权限, 所以需要给文件添加执行权限

 

复制默认配置文件到/etc下:

cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc

 

systemctl restart multipathd

multipath -l    # 即可查看到软件自动扫描后对相同uuid的设备生成的设备名(mpatha)

fdisk /dev/mapper/mpatha    # 模拟出来的设备在/dev/mapper下

 

vim ~/bash_profile

    PATH:$BASH$/usr/bin:/usr/lib/udev    # 为了能使用scsi_id命令

    :wq

 

scsi_id -u -g /dev/sda    # 查看scsi设备id

 

vim /etc/multipath.conf

    user_friend_names yes    # 表示多路径会自动生成一个名字

    user_friend_names no    # 不让它自动生成

    find_multipaths yes    # 表示会检测多路径的配置文件是否完整

 

    multipaths {

        multipath {

            wwid    设备id

            alias    mydisk

        }

    }

 

    :wq

 

在/etc/multipath目录下有个wwid文件, 里面是自动识别多路径的设备的id号

 

fdisk /dev/mapper/mydisk

...

partprobe /dev/mapper/mydisk

 

 

 

nodec:

yum -y install iscsi-init*

 

vim /etc/iscsi/initiatorname.iscsi

    InitiatorName=iqn.2014-09.com.example:node

    :wq

 

systemctl restart iscsid

systemctl restart iscsi

 

# 双线备份

iscsiadm -m discovery -t sendtargets -p 192.168.1.13   

iscsiadm -m node -T iqn.2016-09.com.example:storage -p 192.168.1.13 -l

 

iscsiadm -m discovery -t sendtargets -p 192.168.2.13

iscsiadm -m node -T iqn.2016-09.com.example:storage -p 192.168.2.13 -l

 

# 做多路径:

yum -y install device-mapper-multipath

systemctl enable multipathd

systemctl restart multipathd

multipath -l     # 查看多路径运行状态, 发现dm_multipath模块未加载

lsmod | grep dm_multipath    # 查看加载的模块

modprobe dm_multipath    # 加载模块, 临时生效

 

vim /etc/rc.d/rc.local

    modprobe dm_multipath     # 设置模块永久加载

    :wq

 

rhel 7 默认没有给/etc/rc.d/rc.local执行权限, 所以需要给文件添加执行权限

 

复制默认配置文件到/etc下:

cp /usr/share/doc/device-mapper-multipath-0.4.9/multipath.conf /etc

 

systemctl restart multipathd

multipath -l    # 即可查看到软件自动扫描后对相同uuid的设备生成的设备名(mpatha)

fdisk /dev/mapper/mpatha    # 模拟出来的设备在/dev/mapper下

 

vim ~/bash_profile

    PATH:$BASH$/usr/bin:/usr/lib/udev    # 为了能使用scsi_id命令

    :wq

 

scsi_id -u -g /dev/sda    # 查看scsi设备id

 

vim /etc/multipath.conf

    user_friend_names yes    # 表示多路径会自动生成一个名字

    user_friend_names no    # 不让它自动生成

    find_multipaths yes    # 表示会检测多路径的配置文件是否完整

 

    multipaths {

        multipath {

            wwid    设备id

            alias    mydisk

        }

    }

 

    :wq

 

在/etc/multipath目录下有个wwid文件, 里面是自动识别多路径的设备的id号

 

fdisk /dev/mapper/mydisk

... 

partprobe /dev/mapper/mydisk

 

 

 

 

noded:

mkdir /virtio

dd if=/dev/zero of=/virtio/vdisk1 bs=1M count=1024    # 创建一个1G的文件做虚拟分区

yum -y install targetcli

systemctl stop firewalld

systemctl disable firewalld

systemctl enable target

systemctl start target

targetcli

>ls

>cd backstores/fileio    # 如果用文件创建的虚拟设备, 建议放在fileio(也可以随便放)

>create iscsi_store /virtio/vdisk1

>cd /iscsi

>create iqn.2016-09.com.example:storage

>cd iqn.2016-09.com.example:storage/tpg1/acls

>create iqn.2016-09.com.example:node    # 这个node可以随便取, 但是其他节点上的连接名字必须是这个

>cd luns

>create /backstores/fileio/iscsi_store

>exit

 

systemctl restart target

 

集群级存储之数据同步

ext4, xfs都是单机版文件系统, 也是日志文件系统

由于日志文件系统无法扩大日志存储的部分, 所以不适用于集群环境

 

集群环境采用的日志文件系统是GFS, 分为两种类型: log.dlm和log_nolock(单机版). 因为dlm有锁机制

单机lvm就叫lvm2, 集群用的是clvm(cluster lvm)

 

在iscsi共享存储+fence完成的基础上(不创建分区的前提下)

 

 

 

ndoea:

yum -y install dlm lvm2-clutster gfs2-utils

cd /etc/lvm

vim lvm.conf

    locking_type = 1  # 单机版

    locking_type = 3  # 集群版

    :wq

 

或者用lvmconf --enable-cluster命令更改成集群版lvm

 

systemctl stop lvm2-lvmetad  # 关闭单机版lvm2

systemctl disable lvm2-lvmetad

 

添加资源:

Class: pacemaker

Type: controld

Clone: 勾上

Resource ID: cluster-dlm

创建

 

添加资源:

Class: heartbeat

Type: clvm

Clone: 勾上

Resource ID cluster-clvm

 

点击dlm资源

选择Resource Ordering Preferences中添加

cluster-clvm  starts  after cluster-dlm  starts # 表示会先启动clvm

 

以下步骤任何一个节点都可以:

pvcreate /dev/mapper/mpatha1

vgcreate cluster_vg1 /dev/mapper/mpatha1

lvcreate -L 800M -n cluster_lv1 cluster_vg1

lvdisplay

 

mkfs.gfs2 -p lock_dlm -t cluster1:mygfs2(集群名:文件系统名字) -j 4(节点数量加1, 便于拓展) /dev/cluster_vg1/cluster_lv1

 

mkdir /xx

mount /dev/cluster_vg1/cluster_lv1 /xx

df -h  # 查看到使用了空间为(128*4)日志区这么多个

cd /xx

echo 'hello' > aa

 

# 红帽6上, 不是随系统安装时产生的分区, 默认不具有acl功能, 需要用tune2fs -o acl 分区名(此命令仅适用与ext文件系统)来开启acl

 

GFS2文件格式默认不支持acl, 开启acl的方法是:

mount -o remount,acl /xx  重新挂载, 临时生效, 永久生效要放入集群中

 

磁盘配额:

mount -o remount,quota=on /xx

quotacheck -cugm /xx

edquota -u tom(用户名)

    uid 1001):

                 blocks(以块大小衡量,可以不写)   soft           hard      inodes(以文件个数衡量)  soft    hard

    cluster_lv1     0                      102400(单位KB)   204800        0                    0       0

    :wq

 

repquota -a  查看quota信息

 

添加资源:

Class: heartbeat

Type: Filesystem

Resource Group: WEB

Resource ID: web-fs

device: /dev/cluster_vg1/cluster_lv1

directory: /var/www/html

fstype: gfs2

 

Optional Argument:

option: acl, quota=on

创建

 

添加资源HTTPD...

绑定组

 

corosync-cfgtool -s  # 显示心跳来自哪个网络

 

 

 

 

nodeb:

yum -y install dlm lvm2-cluster gfs2-utils

lvmconf --enable-cluster

systemctl stop lvm2-lvmeta  # 关闭单机版lvm2

systemctl disable lvm2-lvmeta

mkdir /xx

mount /dev/cluster_vg1/cluster_lv1 /xx

cd /xx

cat aa  # 可以看到数据已同步

 

 

 

 

nodec:

yum -y install dlm lvm2-cluster gfs2-utils

lvmconf --enable-cluster

systemctl stop lvm2-lvmeta  # 关闭单机版lvm2

systemctl disable lvm2-lvmeta

mkdir /xx

mount /dev/cluster_vg1/cluster_lv1 /xx

心跳 rrp

nodea:

cd /etc/corosync

vim corosync.conf  # 编辑配置文件, 添加一条心跳网络

    totem {

    rrp_mode: active

    interface {

        ringnumber: 0

        bindnetaddr: 172.25.0.0

        mcastaddr: 239.255.1.1

        mcastport: 5405

        ttl: 1

        }

    interface {

        ringnumber: 1

        bindnetaddr: 192.168.0.0

        mcastaddr: 239.254.1.1

        mcastport: 5405

        ttl: 1

        }

 

    }

    :wq

 

# rrp_mode 有两个值, 一个active, 一个passive

 

pcs cluster stop --all

pcs cluster sync

pcs cluster start --all

 

 

corosync-cfgtool -s  # 显示心跳来自哪个网络




阅读(356) | 评论(0) | 转发(0) |
0

上一篇:用户以及文件管理基本命令

下一篇:没有了

给主人留下些什么吧!~~
评论热议
请登录后评论。

登录 注册