最近、サードパーティ製ソフトウェアのインストール パッケージの変更に遭遇し、インストール パスを /opt/ パスに統一しました。元々はyumを使って直接インストールしていましたが、この記事ではソースコードコンパイルを利用してcentos7にHeartbeatをインストールする方法を紹介します。
1. ハートビートとは何かを理解する
Heartbeat プロジェクトは、高可用性クラスター システムを実装する Linux-HA プロジェクトの不可欠な部分です。ハートビート サービスとクラスター通信は、高可用性クラスターの 2 つの主要なコンポーネントであり、ハートビート プロジェクトでは、これら 2 つの機能はハートビート モジュールによって実装されます。
原則:ハートビートのコアには、ハートビート監視部分とリソース引き継ぎ部分の 2 つの部分が含まれます。ハートビート監視はネットワーク リンクとシリアル ポートを通じて実行でき、冗長リンクをサポートしています。これらは相互にメッセージを送信して、現在の状態を伝えます。 status. status では、指定された時間内に相手から送信されたメッセージが受信されなかった場合、相手は無効とみなされます。このとき、相手のリソースまたはサービスを引き継ぐには、リソース引き継ぎモジュールが開始される必要があります。ホスト。
Heartbeat の公式アドレス: http://www.linux-ha.org/wiki/Download
2.Heartbeatをコンパイルしてインストールします
1. コンパイル環境を準備する
服务器:centos7
安装依赖包:yum install -y gcc gcc-c++ autoconf automake libnet libtool glib2-devel libxml2-devel bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel docbook-dtds docboot-style-xsl asciidoc
创建用户和用户组:
groupadd haclient #创建组haclient
useradd -g haclient hacluster -M -s /sbin/nologin #创建用户hacluster
2. 関連するインストール パッケージをダウンロードします。
ソース コードから Heartbeat をコンパイルしてインストールするには、ダウンロードする必要があるインストール パッケージ ファイルが含まれています (順番にインストールする必要があることに注意してください)。
- Cluster Glue 1.0.12: http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2
- リソース エージェント 3.9.6: https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz
- ハートビート 3.0.6: http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2
3. クラスターグルーをコンパイルする
#解压安装包
tar -xf 0a7add1d9996.tar.bz2
#进入解压后的目录
cd Reusable-Cluster-Components-glue--0a7add1d9996/
#执行脚本
./autogen.sh
#执行configure
./configure --prefix=/opt/heartbeat/ --sysconfdir=/opt/heartbeat/etc libdir=/opt/heartbeat/lib64 LIBS='/lib64/libuuid.so.1'
#编译并安装
make && make install
4. リソースエージェントをコンパイルする
リソース エージェントは、さまざまなリソースの ocf スクリプトであり、LRM によって呼び出され、さまざまなリソースの開始、停止、監視などを行います。
#解压安装包
tar xf resource-agents-3.9.6.tar.gz
#进入解压后的目录
cd resource-agents-3.9.6/
#执行脚本
./autogen.sh
#执行configure
./configure --prefix=/opt/heartbeat/ --sysconfdir=/opt/heartbeat/etc libdir=/opt/heartbeat/lib64 CFLAGS=-I/opt/heartbeat/include LDFLAGS=-I/opt/heartbeat/lib64 LIBS='/lib64/libuuid.so.1'
#编译并安装
make && make install
5. ハートビートをコンパイルしてインストールする
#解压安装包
tar -jxvf 958e11be8686.tar.bz2
#进入解压目录
cd Heartbeat-3-0-958e11be8686
#执行脚本
./bootstrap
#执行configure
./configure --prefix=/opt/heartbeat --sysconfdir=/opt/heartbeat/etc CFLAGS=-I/opt/heartbeat/include LDFLAGS=-L/opt/heartbeat/lib64 LIBS='/lib64/libuuid.so.1'
#创建库文件链接
ln -s /opt/heartbeat/lib64/\* /lib64
#修改源码文件,否则会make报错
vim /opt/heartbeat/include/heartbeat/glue_config.h
/*define HA_HBCONF_DIR “/usr/local/heartbeat/etc/ha.d/”*/ #把这一行用/**/注释掉或者删除掉
#编译并安装
make && make install
6. 関連ファイルをコピーする
#复制配置源码中的配置文件到配置目录
cp -rf doc/{ha.cf,haresources,authkeys} /opt/heartbeat/etc/ha.d/
mkdir -p /opt/heartbeat/usr/lib
cp -rf /usr/lib/ocf /opt/heartbeat/usr/lib/
#修改认证文件及属性
chmod 600 authkeys
#修改配置文件中软件启动路径
sed -i 's#/usr/lib/ocf#/opt/heartbeat/usr/lib/ocf#g' /opt/heartbeat/etc/ha.d/shellfuncs
sed -i 's#/usr/lib/ocf#/opt/heartbeat/usr/lib/ocf#g' /opt/heartbeat/etc/ha.d/resource.d/hto-mapfuncs
sed -i 's#/usr/lib/ocf#/opt/heartbeat/usr/lib/ocf#g' /opt/heartbeat/usr/lib/ocf/lib/heartbeat/ocf-shellfuncs
7. 構成ファイルを変更し、ハートビート サービスを有効にします。
設定ファイルha.cf(/opt/heartbeat/etc/ha.d/ha.cf)を編集します。
#调试日志
debugfile /var/log/ha-debug
#日志文件
logfile /var/log/ha-log
#表示使用系统日志
logfacility local0
#心跳的时间间隔,默认单位为秒
keepalive 1
#超出该时间间隔未收到对方节点的心跳,则判定对方死亡
deadtime 30
#超出该时间间隔未收到对方节点的心跳,则发出警告记录到日志中
warntime 10
#在某系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔,取值至少为deadtime的2倍
initdead 120
#设置广播通信使用的端口,694为默认使用的端口号
udpport 694
#传播心跳的广播网卡信息
bcast eth0
#设置对方机器心跳检测的IP
ucast eth0 192.168.17.10
#在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点
auto_failback off
#配置主从的节点信息(主机名)
node localhost
#如果ping不通该地址,就认为当前断网,需要转移vip
ping 127.0.0.1
#指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping、node来检测网络连接。如果你的系统是64bit,请注意该文件的路径
respawn hacluster /opt/heartbeat/libexec/heartbeat/ipfail
#指定用户和组
apiauth ipfail gid=haclient uid=hacluster
認証キーの編集 authkeys (/opt/heartbeat/etc/ha.d/authkeys)
#
# Authentication file. Must be mode 600
#
#
# Must have exactly one auth directive at the front.
# auth send authentication using this method-id
#
# Then, list the method and key that go with that method-id
#
# Available methods: crc sha1, md5. Crc doesn't need/want a key.
#
# You normally only have one authentication method-id listed in this file
#
# Put more than one to make a smooth transition when changing auth
# methods and/or keys.
#
#
# sha1 is believed to be the "best", md5 next best. --->sha1是被认为是最好的 咱们用这个就是最好
#
# crc adds no security, except from packet corruption.
# Use only on physically secure networks.
#
auth 1
1 crc
2 sha1 HI!
3 md5 Hello!
リソース ファイル haresources (/opt/heartbeat/etc/ha.d/haresources) を編集します。
このファイルはリソースの管理を表します。ホストの場合、このファイルで構成されたすべての起動リソースは、ホストの起動後に自動的にロードされます。リソース スクリプトは、デフォルトで、haresources と同じレベルのディレクトリの下の resource.d ディレクトリにあります。 。
#机器名 虚拟服务器IP 系统服务
localhost 192.168.17.10 mysqld
8. ファイアウォールを閉じて、ハートビート サービスを開始します。
実行可能ファイル heartbeat を見つけて、「heartbeat start」と入力します。
3. よくある問題と解決策
1、/usr/bin/ld: -lplumb が見つかりません
解決策: / -name libplumb* を検索し、対応する依存ライブラリ ファイルを見つけて、/usr/lib64 にコピーします。
2. gmake[2]: a2x: コマンドが見つかりません
解決策: yum install asciidoc
3. resource-agents-3.9.6 のインストール、エラー ln: シンボリック リンク "/usr/lib/ocf/resource.d/heartbeat/.ocf-binaries" を作成できません: ファイルは既に存在します
解決策: アンインストールしてから再インストールします。
4、エラー: /opt/heartbeat/etc/ha.d//ha.cf のディレクティブ [xxx] が不正です
解決策: この状況は通常、構成ファイル ha.cf の構成が正しくないことが原因で発生します。構成ファイルを確認してください。