データベースを準備する
create database mqtt;
use mqtt;
SET FOREIGN_KEY_CHECKS=0;-------------------------------- Table structure for mqtt_acl
------------------------------
DROP TABLE IF EXISTS `mqtt_acl`;
CREATE TABLE `mqtt_acl`(`id`int(11) unsigned NOT NULL AUTO_INCREMENT,`allow`int(1) DEFAULT NULL COMMENT '0: deny, 1: allow',`ipaddr`varchar(60) DEFAULT NULL COMMENT 'IpAddress',`username`varchar(100) DEFAULT NULL COMMENT 'Username',`clientid`varchar(100) DEFAULT NULL COMMENT 'ClientId',`access`int(2) NOT NULL COMMENT '1: subscribe, 2: publish, 3: pubsub',`topic`varchar(100) NOT NULL DEFAULT '' COMMENT 'Topic Filter',
PRIMARY KEY(`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-------------------------------- Table structure for mqtt_user
------------------------------
DROP TABLE IF EXISTS `mqtt_user`;
CREATE TABLE `mqtt_user`(`id`int(11) unsigned NOT NULL AUTO_INCREMENT,`username`varchar(100) DEFAULT NULL,`password` blob,`salt` blob,`is_superuser`tinyint(1) DEFAULT '0',`created` datetime DEFAULT NULL,
PRIMARY KEY(`id`),
UNIQUE KEY `mqtt_username`(`username`)) ENGINE=InnoDB AUTO_INCREMENT=643 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;3つのノードすべてが、次の手順を実行してインストールします
インストールの依存関係:
yum install lksctp-tools -y
emqttをダウンロードします。
https://www.emqx.io/downloads/broker/v2.2.0/emqttd-centos7-v2.2.0.el7.centos.x86_64.rpm
# インストール
rpm -ivh --force emqttd-centos7-v2.2.0.el7.centos.x86_64.rpm
# 127を置き換えます.0.0.1は現在のノードの実際のIPです
sed -i 's$node.name = [email protected]$node.name = [email protected]$g'/etc/emqttd/emq.conf
### mysqlプラグイン構成を変更します(データベース接続情報を置き換えるように注意してください)
sed -i 's$auth.mysql.server = 127.0.0.1:3306$auth.mysql.server = 192.168.6.125:23306$'/etc/emqttd/plugins/emq_auth_mysql.conf
sed -i 's$auth.mysql.pool = 8$auth.mysql.pool = 50$g'/etc/emqttd/plugins/emq_auth_mysql.conf
sed -i 's$## auth.mysql.username =$auth.mysql.username=root$g'/etc/emqttd/plugins/emq_auth_mysql.conf
sed -i 's$## auth.mysql.password =$auth.mysql.password=xiaoWEI0923!$g'/etc/emqttd/plugins/emq_auth_mysql.conf
sed -i 's$select password from mqtt_user$select password,salt from mqtt_user$g'/etc/emqttd/plugins/emq_auth_mysql.conf
sed -i 's$auth.mysql.password_hash = sha256$auth.mysql.password_hash = md5 salt$g'/etc/emqttd/plugins/emq_auth_mysql.conf
### 開始して確認する
# emqttをセルフスタートに設定します
systemctl enable emqttd.service
# emqttを開始します
systemctl start emqttd
# 試験
systemctl statusemqttdまたはnetstat-tlnp |grep 1883、次の内容が印刷されている場合、サービスが開始され、1883が監視されていることを証明します
tcp 00127.0.0.1:118830.0.0.0:* LISTEN 21579/beam.smp
tcp 000.0.0.0:18830.0.0.0:* LISTEN 21579/beam.smp
# mysql認証をロードします
emqttd_ctl plugins load emq_auth_mysql
# emqttを再起動します
systemctl restart emqttd
ブラウザでhttpを開く://現在の展開ノードip:18083/#/plugins
アカウント:管理者
パスワード:パブリック
emqを確認する_auth_mysqlプラグインは実行状態です
クラスターを作成する
上にmqttがインストールされているサーバーがそれぞれnode1、node2、node3であるとすると、次のようになります。
node2で実行:emqttd_ctl cluster join emqttd@node1のip
node3で実行:emqttd_ctl cluster join emqttd@node2 ip
# クラスターが正常に作成されたことを確認します
emqttd_ctl cluster status
running_次のように、すべてのノードIPがノードに含まれます。
Cluster status:[{running_nodes,['[email protected]','[email protected]','[email protected]']}]
回復
エンドポイントまたはその他の理由でクラスターに障害が発生した場合は、クラスター内にないノードを停止し、関連ファイルを削除して、クラスターに再度参加します。
systemctl stop emqttd
rm -Rf /var/lib/emqttd/mnesia/*
systemctl start emqttd
emqttd_ctl cluster join emqttd@ノードIP
Recommended Posts