在银河麒麟V10(ARM64)上安装Consul必须使用官方发布的consul_1.18.1_linux_arm64.zip,禁用ACL与verify_outgoing,创建consul用户并正确赋权,配置systemd服务后启动验证。

在银河麒麟V10操作系统(ARM64架构)上安装Consul,必须避开系统仓库中严重滞后的版本(如Ubuntu源里常见的1.10.x),否则ACL默认启用、gRPC端口逻辑变更、TLS行为收紧等新特性缺失,会导致配置静默失败或启动卡死在“Failed to start RPC layer”。
下载并部署Consul二进制文件
访问HashiCorp官方发布页,获取适配ARM64的最新稳定版——截至2026年6月,【consul_1.18.1_linux_arm64.zip】是唯一经验证可稳定运行于麒麟V10的版本。不要下载amd64包,强行运行会报“cannot execute binary file: Exec format error”。
执行命令下载:wget https://releases.hashicorp.com/consul/1.18.1/consul_1.18.1_linux_arm64.zip
安装unzip工具(麒麟V10默认未预装):sudo apt update && sudo apt install -y unzip
解压并安装到系统路径:unzip consul_1.18.1_linux_arm64.zip && sudo install -m 0755 consul /usr/local/bin/——这里必须用install而非cp,否则权限丢失,后续systemd服务会因无法读取二进制而退出。
验证安装:consul version。输出中必须同时出现Consul v1.18.1 (arm64)和Protocol 2,缺一不可;若提示command not found,说明/usr/local/bin不在当前用户PATH中,需手动追加或重启shell。
创建专用运行用户与目录结构
为安全起见,Consul不应以root身份运行。创建无登录权限的专用用户:sudo useradd -r -s /bin/false consul
新建配置与数据目录:sudo mkdir -p /etc/consul.d /opt/consul/data
赋权给consul用户:sudo chown -R consul:consul /etc/consul.d /opt/consul——【这一步漏掉会导致systemd启动时权限拒绝,日志只显示“failed to join cluster”而不报具体原因】
检查目录归属是否正确:ls -ld /etc/consul.d /opt/consul,两行输出中用户组列都应显示consul consul。
编写单节点开发配置文件
进入配置目录:cd /etc/consul.d
创建server.json,内容如下:
{"datacenter": "dc1","data_dir": "/opt/consul/data","log_level": "INFO","server": true,"bootstrap_expect": 1,"bind_addr": "127.0.0.1","client_addr": "127.0.0.1","ui": true,"acl": { "enabled": false },"verify_outgoing": false}
注意:"bind_addr"和"client_addr"设为127.0.0.1而非0.0.0.0,避免将8500端口暴露给局域网;【"acl": { "enabled": false }和"verify_outgoing": false二者缺一不可,v1.14+版本若漏掉任一字段,agent会卡在启动阶段不动,日志末尾停在tls或ACL相关错误】
配置systemd服务并启用开机自启
创建服务单元文件:sudo vim /etc/systemd/system/consul.service
填入以下内容:
[Unit]Description=Consul Service Discovery AgentDocumentation=https://www.consul.io/docs/Wants=network-online.targetAfter=network-online.target[Service]Type=simpleUser=consulGroup=consulExecStart=/usr/local/bin/consul agent -config-dir=/etc/consul.dRestart=on-failureRestartSec=5LimitNOFILE=65536[Install]WantedBy=multi-user.target
重载systemd配置:sudo systemctl daemon-reload
启动服务:sudo systemctl start consul
设为开机自启:sudo systemctl enable consul
检查状态:sudo systemctl status consul——若看到active (running)且无红色error字样,说明服务已就绪;若显示failed,立即执行sudo journalctl -u consul -n 50 -f查看实时日志,重点排查ACL字段缺失、目录权限或网络就绪问题。
验证服务是否正常运行
方法一:命令行验证
执行sudo -u consul consul members,输出中应有一行本地节点,状态为alive,角色为server。
方法二:Web界面验证
在麒麟桌面浏览器中访问http://127.0.0.1:8500/ui/dc1/nodes,页面加载成功且显示单个节点即为正常。
方法三:API验证
执行curl -s http://127.0.0.1:8500/v1/status/leader | jq -r .,返回非空IP地址字符串(如127.0.0.1:8300)表示Raft leader选举完成。

















