1 | target: |
1 | target: |
注意:
如果想实现用户认证,必须先打开IP认证。
取消此前的操作:
1 | # iscsiadm -m node -T iqn.2013-05.com:teststore.disk1 -p 172.16.100.100 -u 登出 |
1 | # vim /etc/iscsi/iscsid.conf |
initiator机装:
1 | # ha ssh node $I 'yum -y install cman rgmanager gfs2-utils' |
mkfs.gfs2:
-b 块文件大小
-j :指定日志区域的个数,有几个就能被几个节点挂载;
-J #MB: 指定日志文件大小,默认为128M;
-p :锁协议的名称
lock_dlm :分布式日志文件锁
lock_nolock}:不使用锁
-t
gfs2_jadd :
gfs2_jadd -j 3 /dev/sdc2
可以用来调整日志区域的个数
3表示的是在原来的基础上再增加3个...
gfs2_tool:
gfs2_tool journals /dev/sdc2
mkfs.gfs2 -j 2 -p lock_dlm -t tcluster:mysqlstore /dev/sdc2
如果失败:
fs is for a different cluster error mounting lockproto lock_dlm
则表示:
1、cman没有启动,可以使用clustat进行查看;如果正常,则只可能错误出现在一个地方,格式化那步出错:
successfully use “lock_dlm”, the kernel’s DLM subsystem must be up and running, which requires that you must have set up a basic cluster configuration: a cluster with no services defined yet, but with heartbeat and fencing configured and running.
Normally the gfs_controld daemon starts along with other cluster daemons when you run “service cman start”. Looks like your cman start-up has not been successful. You should fix that first.
可以看总结…………
在另外一个节点上挂载:
1 | # mount -t gfs2 /dev/sdc2 /mnt |
实现ISCSI共享存储的所需的软件包:
ISCSI Target : scsi-target-utils //在此设置共享存储设备
ISCSI Initiator : iscsi-initiator-utils
客户端认证方式:
1 | Target默认工作在3260端口; |
target准备:
在这一步建议用配置文件的方式进行定义,因为不会生成配置文件,所以更多可以参考41_02;
Initiator:
iscsiadm模式化的命令:
-m {discovery|node|session|iface}
discovery:发现某服务器是否有target输出,以及输出了哪些target;
node:管理跟某target的关联关系;
session:会话管理;
iface:接口管理
iscsiadm -m discovery [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -I iface -t type -p ip:port [ -l ] ] | [ [ -p ip:port ] [ -l | -D ] ]
-d: 0~8 级别的越高看到的信息就越多,可以自己尝试;;
-I:指定接口
-t type:
SendTargets(ST)
SLP
iSNS
-p:IP:port
iscsiadm -m node [ -hV ] [ -d debug_level ] [ -P printlevel ] [ -L all,manual,automatic ] [ -U all,manual,automatic ] [ -S ] [ [ -T targetname -p ip:port -I iface ] [ -l | -u | -R | -s] ] [ [ -o operation ] [ -n name ] [ -v value ] [ -p ip:port ] ]
-L:登陆
all:登陆所有
manual:手动指定
automatic:自动登陆
-U:登出
1 |
|
1 | # iscsiadm -m discovery -t sendtargets -p 172.16.100.100 |
再开一台主机,同样操作,当挂载了后,往里面写文件,会发现一个现象:
node1上的文件有可能会在node2上看不到
node2上的文件有可能会在node1上看不到
为什么?
此时的操作还在内存中完成,没有同步到硬盘中,以至于多台主机共享这个共享存储的时候会面临一个问题:
当多台主机对共享存储中的一个文件进行写操作的时候,肯定会发生数据紊乱,
所以就要结合集群文件系统。。
ISCSI基于CHAP认证:这个讲的很详细,建议参考着看。。
http://blog.csdn.net/sinchb/article/details/8433994
被监控主机:192.168.122.103
监控主机:192.168.122.117
1 | yum -y install net-snmp |
1 | yum -y install httpd php php-mysql php-snmp php-xml php-gd mysql mysql-server epel-release rrdtool |
http://IP/cacti admin/admin
(1)添加设备,这个就是103远程主机
(2)添加103这个设备的相关信息
一定要保存,然后为其创建图形模板
(3)选中所有的模板(图为已经选中过的)
(4)在图形树这add所有的模板,然后save
(5)然后查看,等待数据
1 | 1、安装percona-mysql-monitor插件 |
总结:
对于被监控主机,安装net-snmp服务即可,剩下的操作在监控主机上做,对于被监控端的数据库,要进行授权,否则监控主机这是没有办法连接远程数据库的,这个地方要注意;
另外:我在这个地方所有的用户名和密码都是cactiuser,cactiuser,这个地方自己要注意修改,cacti安装需要本地有数据库,所以那个地方是一个授权,另外远程数据库的授权,是一个完全独立的授权,自己修改监控主机的/var/www/html/cacti/scripts/ss_get_mysql_stats.php即可;;;;
如果出错:
smpwalk -v 2c -c public 192.168.122.103
如果不出数据:(不一定在那个时间点出,等会即可)
rrdtool fetch /var/www/html/cacti/rra/**** AVERAGE
注意:
如果在安装cacti,向本地数据库导入cacti.sql时,如果出现错误,一定不会成功,注意查看相关信息;
1 | 方式①:通过system-config-cluster进行资源配置 |
附录一:
在centos6.7进行重启时,由于关闭了NetworkManager服务,会发现eth0没有启动,解决方法:
service NetworkManager start 即可,会发现cman服务并不会受影响;;;
RHCS(Red Hat Cluster Suite):
LVS
HA
GFS2 (Global File System,早期RH4/5有GFS)
cLVM (Cluster Logical Volume Manager)
RHCS提供了完整的集群资源套件,例如上面的负载均衡,高可用,集群文件系统,集群逻辑卷管理器;
在RH4,5两个版本中,信息层和管理层和资源代理的实现组件如下:
RHCS:
ML:cman (cluster manager)
CRM: rgmanager (resource group manager)
RA:
1、internal
2、script: LSB
在RH4上Messaging Layer是cman,但是由于cman在整个信息层的功能没有openais的强大,所以在RH5上cman作为openais的一个插件工作,而这个插件的主要作用在于提供了quorum(因为当时并没有很好的关于投票系统的解决方案)但是配置文件并不依赖于openais,而是由cman自己提供,在/etc/cluster/cluster.conf,所以说在RH5上openais提供了信息层的监控,但是仍由cman进行管理。
在RH6上提供了完整的corosync信息层管理工具,可以不再使用cman这个插件,如果使用cman,它的配置文件仍是/etc/cluster/cluster.conf;
然而在资源管理层虽然使用了pacemaker,但是仍由rgmanager管理,这个和信息层一样,即虽然使用了corosync和pacemaker,但是仍由cman和rgmanager控制;
在corosync2.3.0版本后,提供了一个更加优秀的投票系统,这个叫做votequorum,所以在这个版本中的cman将会退出这个江湖;
gfs2:Global File System(集群文件系统):最好16个节点
ocfs2:Oracle Cluster File System(没有gfs2好)
DLM:Distributed Lock Manager(分布式锁管理器)
gfs:Google file system(分布式文件系统)
所以在搜索gfs的时候要注意;
为了能够扩展容量,所以提供了类似LVM的集群逻辑卷;
cLVM:借助于HA的功能,将某个节点对LVM操作通知给其他节点;
CCS(Cluster Configuration System):各个节点配置资源的通知,更新;
Failover domain:服务故障转移域:表示节点出问题了应该往哪节点转移以及是否应该重启服务;
如果一个服务停止了,是转移到另外一个节点上,还是应该重启服务,所以可以定义优先级;
LVM–>cLVM:
#vim /etc/lvm/lvm.conf
locking_type =1 基于文件的锁
把其改为3就可改为集群的了;
然后启动cLVM服务即可;
LVS:piranha(GUI工具)
软件、系统安装:
cobbler(类似于PXE的自动安装)
puppet(配置文件管理、软件分发)
luci/ricci(集群管理)
fabric(命令分发工具,比for ;do ssh ; done这个方式高的多)
RHCS配置:
system-config-cluster
详细部分可以查看:
http://blog.chinaunix.net/uid-26931379-id-3558604.html
1 | #fdisk /dev/sdb 分了500M大小,同步速度一取决于DRBD配置文件中的rate定义,在drbd84版本中就不存在这个选项了. |
1 | #rpm -Uvh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm |
1 | 配置/etc/drbd.d/global-common.conf |
1 | [root@node1 mysql]# cd /etc/crosync |
1、共享存储
2、如何让MySQL到NFS上读取配置文件
1、NFS
/mydata 192.168.1.0/24(rw,no_root_squash)
2、mysql用户(组)
1 | #scripts/mysql_install_db --user=mysql ---datadir=/mydata/data/ |
HA1:192.168.1.110
HA2:192.168.1.111
NFS:192.168.1.120
1 |
|
1 |
|
1 | # groupadd -g 3306 mysql |
需要说明的是:
NFS挂了怎么办?
仍要对NFS做高可用。
这篇文章写的不错,建议参考。
http://www.tuicool.com/m/articles/NBjuam
1 | service iptables off |
1 | tar xvjf apr-1.5.1.tar.bz2 |
1 | wget -c http://cn2.php.net/distributions/php-5.6.12.tar.bz2 |
如果出现:
PEAR package PHP_Archive not installed: generated phar will require PHP’s phar extension be enabled.
wget http://pear.php.net/go-pear.phar
/usr/local/php/bin/php go-pear.phar
CIB: Cluster Information Base
xml格式,为了能够简单使用CIB,提供了haresources2clib.py脚本
当在ha.cf中添加了crm respawn选项的时候,默认的haresources配置信息就不会再被使用,但是可以执行
/usr/lib64/heartbeat/haresources2cib.py脚本使其保留在/var/lib/heartbeat/crm/目录下;
但是haresources2cli.py的执行需要依赖同目录下的ha_propagate脚本,执行这个脚本会自动进行同步到其他节点上;
当VIP挂了,备用节点抢过来VIP上线,但是在路由器中保存的是原来VIP的mac地址,那么备用节点需要进行arp欺骗:
/usr/lib64/heartbeat/send_arp实现mac地址伪装,进行arp欺骗;
换另一种方式:
1 | yum install pacemaker corosync |
cibadmin
cibclient
crmmon:可用于监测这些节点状态,每15秒刷新一次
crmadmin
crm_resource:用来做资源配置
crm_verify:校验/usr/lib64/heartbeat/cib.xml文件是否有语法错误的;
crm_standby:指定让哪个节点转为备节点
crm_sh:crm的命令行工具
使用方法:
1 | > #crm_sh |
如何使用GUI方式进行管理
1、tail /etc/passwd
默认生成hacluster用户,没有密码
#passwd hacluster ,密码随便
#tail /var/log/message 查看谁是DC:假设是node2:192.168.1.103
当然连接到hb_gui上也可以进行查看
#hb_gui &
会出现:
Server(:port) 192.168.1.103
User Name: hacluster
Password: hacluster
添加资源
Resources–> + –> native –>Resource ID:webip–>Type–>IPaddr(2)–> Parameters–>ip 192.168.1.101–>Add Parameters –>nic eth0–>cidr_netmask 24
最后Patameters类似:
Name Value
ip 192.168.1.103
nic eth0
cidr_netmask 16
点击webip–>右键–>start
如果出现错误,webip–>右键–>Migrate Resource–>To node:node1.test.com
–>Force:True
如果仍然错误,webip–>右键–>Clear Migrate Constraints即可;
添加资源–>httpd–>这里使用LSB的httpd脚本–>add即可;
如果用到组:应该先添加组:
Resources– >+–>group–>Resoure ID: webip–>Type–>IPaddr(2)–> Parameters–>ip 192.168.1.101–>Add Parameters –>nic eth0–>cidr_netmask 24
添加资源–>group–>httpd–>这里使用LSB的httpd脚本–>add即可;
将node2.test.com running(dc)右键转为standby将会转移到node1.test.com,刷新网页,将会发生改变
添加nfs文件系统
先停下上面哪个组
#mount -t nfs 192.168.1.105:/web/htdocs /var/www/html
然后
add –>native–>Filesystem–>Resource ID:webstore device 192.168.1.105:/web/htdocs
directory /var/www/html
fstype nfs
应该注意,最后的Resources的排列顺序应该是webip–>webstore–>httpd,这个顺序和resources那种方式定义的顺序是一样的;
如果出现错误,更多是状态信息导致的,可以重新添加;;
通过资源约束使三个独立运行的节点联系到一起
1、定义资源约束
Colocations–>OK–>ID httpd_with_filesystem–>from httpd –>to webstore–>Score INFINITY(正无穷,永远在一起)–>OK
Colocations–>OK–>ID webstore_with_webip–>from webstore –>to webip–>Score INFINITY(正无穷,永远在一起)–>OK
2、定义启动顺序
Orders–>ID webstore_before_httpd–>from httpd –> To webstore
配置好后可看Description
Orders–>ID webip_before–>from httpd –> To webip
设置粘性Default Resource Stickiness,可使默认DC转移到设置的主机上,只要大于0即可;
如果想让某个资源运行到另外一个节点上,那么可以设定位置约束
Locations->add new items item type :localtion –>ID webip_on_node1 Resource:webip–>OK
点击webip_on_node1–>右面–Score : INFIINTY(设定为永远)
Add Expression –>uname eq node1.test.com –Apply
会发现所有资源运行在node1.test.com上;
练习说明:
1 | yum install pacemaker heartbeat |
貌似在centos6.5+这个有BUG的…,所以以后做的时候,建议使用heartbeat自带的haresources进行管理;
我在看pacemaker的文档时,都不再涉及heartbeat+pacemaker这种方式,而是使用了corosync+pacemaker这种,所以,建议使用后者;;
更详细可直接参考这篇文章:
http://www.linuxidc.com/Linux/2013-08/89167p3.htm
http://www.cnblogs.com/chinacloud/archive/2010/11/18/1881056.html
http://wolfword.blog.51cto.com/4892126/1210647
http://wenku.baidu.com/link?url=71Xs0ZrJ6HehYNlPRfDziVImX4JvP0hM30ZTM9LxBzU0fJw7nnWrqbNE8gaFInnL50byi7-oOX3tR5qNpqJQlYO3nP-5EffJn87tAuPVUSa
http://blog.csdn.net/flcandclf/article/details/14520501
http://www.tuicool.com/articles/jM7jiu
http://www.21ops.com/linux/15178.html
缺失模块。
1、请确保node版本大于6.2
2、在博客根目录(注意不是yilia根目录)执行以下命令:
npm i hexo-generator-json-content --save
3、在根目录_config.yml里添加配置:
jsonContent: meta: false pages: false posts: title: true date: true path: true text: false raw: false content: false slug: false updated: false comments: false link: false permalink: false excerpt: false categories: false tags: true