{"id":10243,"date":"2025-06-24T18:12:34","date_gmt":"2025-06-24T10:12:34","guid":{"rendered":"https:\/\/bohu.net\/blog\/?p=10243"},"modified":"2025-06-24T18:12:36","modified_gmt":"2025-06-24T10:12:36","slug":"debian-%e7%b3%bb%e7%bb%9f%e4%b8%8a%e5%ae%89%e8%a3%85-rqlited","status":"publish","type":"post","link":"https:\/\/www.bohu.net\/blog\/10243\/","title":{"rendered":"Debian \u7cfb\u7edf\u4e0a\u5b89\u88c5 rqlited"},"content":{"rendered":"\n<p>\u5728 Debian \u7cfb\u7edf\u4e0a\u5b89\u88c5 rqlited \u53ef\u901a\u8fc7\u4ee5\u4e0b\u6b65\u9aa4\u5b8c\u6210\uff1a<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>\u4e0b\u8f7d\u9884\u7f16\u8bd1\u4e8c\u8fdb\u5236\u6587\u4ef6<br>rqlite \u5b98\u65b9\u63d0\u4f9b Linux \u5e73\u53f0\u7684\u9884\u7f16\u8bd1\u4e8c\u8fdb\u5236\u6587\u4ef6\uff0c\u53ef\u76f4\u63a5\u4e0b\u8f7d\u8fd0\u884c\uff1a<\/li>\n<\/ol>\n\n\n\n<p><code>wget https:\/\/github.com\/rqlite\/rqlite\/releases\/download\/v7.0.0\/rqlited-v7.0.0-linux-amd64.tar.gz<br>tar -xzvf rqlited-v7.0.0-linux-amd64.tar.gz<br>cd rqlited-v7.0.0-linux-amd64<\/code><\/p>\n\n\n\n<ol start=\"2\" class=\"wp-block-list\">\n<li>\u8fd0\u884c rqlited<br>\u5355\u8282\u70b9\u6a21\u5f0f\uff1a<br><code>.\/rqlited -node-id 1 ~\/rqlite\/data<\/code><br>\u96c6\u7fa4\u6a21\u5f0f\uff08\u9700\u6307\u5b9a Leader \u8282\u70b9\uff09\uff1a<\/li>\n<\/ol>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Leader \u8282\u70b9<\/p>\n<\/blockquote>\n\n\n\n<p><code>.\/rqlited -node-id 1 -http-addr 192.168.1.100:4001 ~\/rqlite\/leader_data<\/code><\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Follower \u8282\u70b9\uff08\u52a0\u5165\u96c6\u7fa4\uff09<\/p>\n<\/blockquote>\n\n\n\n<p><code>.\/rqlited -node-id 2 -http-addr 192.168.1.101:4001 -join http:\/\/192.168.1.100:4001 ~\/rqlite\/follower_data<\/code><\/p>\n\n\n\n<ol start=\"3\" class=\"wp-block-list\">\n<li>\u9a8c\u8bc1\u5b89\u88c5<br>\u901a\u8fc7 HTTP API \u68c0\u67e5\u670d\u52a1\u72b6\u6001\uff1a<\/li>\n<\/ol>\n\n\n\n<p>curl http:\/\/localhost:4001\/status<\/p>\n\n\n\n<ol start=\"4\" class=\"wp-block-list\">\n<li>\u53ef\u9009\u914d\u7f6e<br>\u6570\u636e\u76ee\u5f55\u6743\u9650\uff1a\u786e\u4fdd\u8fd0\u884c\u7528\u6237\u5bf9\u6570\u636e\u76ee\u5f55\u6709\u8bfb\u5199\u6743\u9650\u3002<br>\u7cfb\u7edf\u670d\u52a1\u5316\uff1a\u901a\u8fc7 systemd \u7ba1\u7406\u670d\u52a1\uff08\u793a\u4f8b\u914d\u7f6e\uff09\uff1a<\/li>\n<\/ol>\n\n\n\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<div class=\"wp-block-group\"><div class=\"wp-block-group__inner-container is-layout-constrained wp-block-group-is-layout-constrained\">\n<p>sudo nano \/etc\/systemd\/system\/rqlited.service<br>\u5185\u5bb9\u53c2\u8003\uff1a<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><code>[Unit]<br>Description=rqlited<br>After=network.target<\/code><\/p>\n\n\n\n<p><code>[Service]<br>ExecStart=\/path\/to\/rqlited -node-id 1 \/path\/to\/data<br>User=rqlite<br>Restart=always<\/code><\/p>\n\n\n\n<p><code>[Install]<br>WantedBy=multi-user.target<\/code><\/p>\n<\/blockquote>\n<\/div><\/div>\n<\/div><\/div>\n\n\n\n<p><br>\u542f\u7528\u670d\u52a1\uff1a<\/p>\n\n\n\n<p><code>sudo systemctl enable --now rqlited<\/code><\/p>\n\n\n\n<ol start=\"5\" class=\"wp-block-list\">\n<li>\u5176\u4ed6\u5b89\u88c5\u65b9\u5f0f<br>Docker \u90e8\u7f72\uff1a<br>docker run -p 4001:4001 rqlite\/rqlited<br>\u6e90\u7801\u7f16\u8bd1\uff08\u9700 Go \u73af\u5883\uff09\uff1a<br>git clone https:\/\/github.com\/rqlite\/rqlite<br>cd rqlite<br>make<br>\u6ce8\u610f\u4e8b\u9879<br>\u786e\u4fdd\u9632\u706b\u5899\u5f00\u653e 4001\uff08HTTP API\uff09\u548c 4002\uff08Raft \u901a\u4fe1\uff09\u7aef\u53e3\u3002<br>\u751f\u4ea7\u73af\u5883\u5efa\u8bae\u914d\u7f6e TLS \u52a0\u5bc6\u548c\u8ba4\u8bc1\u3002<br>\u5982\u9700\u66f4\u8be6\u7ec6\u7684\u96c6\u7fa4\u914d\u7f6e\u6216\u6027\u80fd\u4f18\u5316\uff0c\u53ef\u53c2\u8003\u5b98\u65b9\u6587\u6863\u3002<\/li>\n<\/ol>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<p>\u9644\u5e26\u53c2\u8003\u8bbe\u7f6e\u793a\u4f8b\u811a\u672c\uff0c\u901a\u8fc7\u53d8\u91cf\u5b9a\u4e49\u6570\u636e\u5b58\u50a8\u76ee\u5f55\uff0c\u5e76\u6839\u636e -node-id \u81ea\u52a8\u751f\u6210\u76ee\u5f55\u8def\u5f84\uff1a<\/p>\n\n\n\n<p><strong>deploy_rqlite_cluster.sh<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code><code>\n#!\/bin\/bash\n# \u914d\u7f6e\u53d8\u91cf\uff08\u6839\u636e\u5b9e\u9645\u73af\u5883\u4fee\u6539\uff09\nBASE_DATA_DIR=\"\/opt\/rqlite\"          # \u6570\u636e\u5b58\u50a8\u57fa\u7840\u76ee\u5f55\nLEADER_IP=\"192.168.1.100\"            # \u4e3b\u8282\u70b9IP\nFOLLOWER1_IP=\"192.168.1.101\"         # \u5b50\u8282\u70b91 IP\nFOLLOWER2_IP=\"192.168.1.102\"         # \u5b50\u8282\u70b92 IP\nREADONLY_IP=\"192.168.1.103\"          # \u53ea\u8bfb\u8282\u70b9IP\n\n# \u521b\u5efa\u6570\u636e\u76ee\u5f55\uff08\u6240\u6709\u8282\u70b9\uff09\nmkdir -p $BASE_DATA_DIR\/{data1,data2,data3,data4}\n\n# \u4e3b\u8282\u70b9\uff08Leader\uff09\nssh $LEADER_IP \"nohup .\/rqlited -node-id 1 \\\\\n  -http-addr $LEADER_IP:4001 \\\\\n  -raft-addr $LEADER_IP:4002 \\\\\n  $BASE_DATA_DIR\/data1 > $BASE_DATA_DIR\/rqlite.log 2>&amp;1 &amp;\"\n\n# \u5b50\u8282\u70b91\uff08Follower\uff09\nssh $FOLLOWER1_IP \"nohup .\/rqlited -node-id 2 \\\\\n  -http-addr $FOLLOWER1_IP:4001 \\\\\n  -raft-addr $FOLLOWER1_IP:4002 \\\\\n  -join http:\/\/$LEADER_IP:4001 \\\\\n  $BASE_DATA_DIR\/data2 > $BASE_DATA_DIR\/rqlite.log 2>&amp;1 &amp;\"\n\n# \u5b50\u8282\u70b92\uff08Follower\uff09\nssh $FOLLOWER2_IP \"nohup .\/rqlited -node-id 3 \\\\\n  -http-addr $FOLLOWER2_IP:4001 \\\\\n  -raft-addr $FOLLOWER2_IP:4002 \\\\\n  -join http:\/\/$LEADER_IP:4001 \\\\\n  $BASE_DATA_DIR\/data3 > $BASE_DATA_DIR\/rqlite.log 2>&amp;1 &amp;\"\n\n# \u53ea\u8bfb\u8282\u70b9\uff08Non-Voter\uff09\nssh $READONLY_IP \"nohup .\/rqlited -node-id 4 \\\\\n  -http-addr $READONLY_IP:4001 \\\\\n  -raft-addr $READONLY_IP:4002 \\\\\n  -non-voter \\\\\n  -join http:\/\/$LEADER_IP:4001 \\\\\n  $BASE_DATA_DIR\/data4 > $BASE_DATA_DIR\/rqlite.log 2>&amp;1 &amp;\"\n\necho \"\u96c6\u7fa4\u90e8\u7f72\u5b8c\u6210\uff0c\u68c0\u67e5\u72b6\u6001\uff1a\"\necho \"curl $LEADER_IP:4001\/status?pretty\"\n<\/code><\/code><\/pre>\n\n\n\n<p>\u811a\u672c\u8bf4\u660e\uff1a<\/p>\n\n\n\n<p>1. \u901a\u8fc7BASE_DATA_DIR\u53d8\u91cf\u96c6\u4e2d\u7ba1\u7406\u5b58\u50a8\u8def\u5f84 <\/p>\n\n\n\n<p>2. \u81ea\u52a8\u6309node-id\u751f\u6210data1~data4\u5b50\u76ee\u5f55 <\/p>\n\n\n\n<p>3. \u65e5\u5fd7\u7edf\u4e00\u8f93\u51fa\u5230\u57fa\u7840\u76ee\u5f55\u4e0b <\/p>\n\n\n\n<p>4. \u9700\u63d0\u524d\u786e\u4fdd\u5404\u8282\u70b9\u5df2\u5b89\u88c5rqlited<\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u5728 Debian \u7cfb\u7edf\u4e0a\u5b89\u88c5 rqlited \u53ef\u901a\u8fc7\u4ee5\u4e0b\u6b65\u9aa4\u5b8c\u6210\uff1a wget https:\/\/github.c &hellip; <a href=\"https:\/\/www.bohu.net\/blog\/10243\/\" class=\"more-link\">\u7ee7\u7eed\u9605\u8bfb<span class=\"screen-reader-text\">\u201cDebian \u7cfb\u7edf\u4e0a\u5b89\u88c5 rqlited\u201d<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[746,6,815,814,29],"tags":[117,229,825,826,828,827,590],"class_list":["post-10243","post","type-post","status-publish","format-standard","hentry","category-bash","category-linux","category-sql-","category-sqlite","category-29","tag-debian","tag-linux","tag-rqlited","tag-826","tag-828","tag-827","tag-590"],"_links":{"self":[{"href":"https:\/\/www.bohu.net\/blog\/wp-json\/wp\/v2\/posts\/10243","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.bohu.net\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.bohu.net\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.bohu.net\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.bohu.net\/blog\/wp-json\/wp\/v2\/comments?post=10243"}],"version-history":[{"count":1,"href":"https:\/\/www.bohu.net\/blog\/wp-json\/wp\/v2\/posts\/10243\/revisions"}],"predecessor-version":[{"id":10244,"href":"https:\/\/www.bohu.net\/blog\/wp-json\/wp\/v2\/posts\/10243\/revisions\/10244"}],"wp:attachment":[{"href":"https:\/\/www.bohu.net\/blog\/wp-json\/wp\/v2\/media?parent=10243"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.bohu.net\/blog\/wp-json\/wp\/v2\/categories?post=10243"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.bohu.net\/blog\/wp-json\/wp\/v2\/tags?post=10243"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}