准备多节点部署
在多节点集群中安装 Standard Edition 之前,请准备好您的环境。
以下各节中的准备命令是针对 root 用户的。 如果您是非根用户,可以使用 sudo 运行这些命令。
准备附加磁盘
您必须准备好在存储要求部分为每个数据目录添加的磁盘。
完成这些任务的命令取决于您的环境、您选择的文件系统以及您添加的磁盘类型。
以下各节中的命令只是示例,旨在说明准备使用磁盘的要求。 您必须使用适合您环境的命令。
识别主机上的磁盘
要查看系统中的可用设备,请在 node0 和 node1:
lsblk
下面是 node0 的输出示例。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 63.5M 1 loop /snap/core20/2015
loop1 7:1 0 87M 1 loop /snap/lxd/27037
loop3 7:3 0 111.9M 1 loop /snap/lxd/24322
loop4 7:4 0 63.9M 1 loop /snap/core20/2182
loop5 7:5 0 40.9M 1 loop /snap/snapd/20290
loop6 7:6 0 40.4M 1 loop /snap/snapd/20671
vda 252:0 0 250G 0 disk
├─vda1 252:1 0 1M 0 part
└─vda2 252:2 0 248G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 248G 0 lvm /
vdb 252:16 0 1000G 0 disk
下面是 node1 的输出示例。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
loop0 7:0 0 63.5M 1 loop /snap/core20/2015
loop1 7:1 0 87M 1 loop /snap/lxd/27037
loop3 7:3 0 111.9M 1 loop /snap/lxd/24322
loop4 7:4 0 63.9M 1 loop /snap/core20/2182
loop5 7:5 0 40.9M 1 loop /snap/snapd/20290
loop6 7:6 0 40.4M 1 loop /snap/snapd/20671
vda 252:0 0 250G 0 disk
├─vda1 252:1 0 1M 0 part
└─vda2 252:2 0 248G 0 part
└─ubuntu--vg-ubuntu--lv 253:0 0 248G 0 lvm /
vdb 252:16 0 1000G 0 disk
vdc 252:32 0 500G 0 disk
vdd 252:48 0 500G 0 disk
创建文件系统
对于在 node0 和 node1 上添加的每个磁盘,都必须创建文件系统。
您可以为磁盘使用任何合适的文件系统。 Ext4 和 XFS 是两种流行的 Linux 文件系统。 在 Ext4 和 XFS 之间做出选择取决于您的偏好和系统的具体需求。 Ext4 对于大多数系统来说是个不错的选择,但如果你需要一个更可靠的文件系统,XFS 可能是更好的选择。
以下是使用
ext4文件系统的示例。在 node0 ( instana-0 ) 上,可以使用以下命令创建单一文件系统:
for disk in vdb ; do echo "make filesystem for $disk" mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/$disk done在 node1 ( instana-1 ) 上,可以使用以下命令创建三个文件系统:
for disk in vdb vdc vdd ; do echo "make filesystem for $disk" mkfs.ext4 -m 0 -E lazy_itable_init=0,lazy_journal_init=0,discard /dev/$disk done
以下是使用
xfs文件系统的示例。在 node0 ( instana-0 ) 上,可以使用以下命令创建单一文件系统:
for disk in vdb; do echo "make filesystem for $disk" mkfs.xfs -f -i size=1024 -L $disk /dev/$disk done在 node1 ( instana-1 ) 上,可以使用以下命令创建三个文件系统:
for disk in vdb vdc vdd; do echo "make filesystem for $disk" mkfs.xfs -f -i size=1024 -L $disk /dev/$disk done
创建目录
确保在主机上创建了四个目录。 请参见硬件要求。
以下示例命令使用默认目录路径。 您可以在自己选择的任何位置创建目录。 不过,请确保在挂载目录时使用正确的路径。
在 node0 (
instana-0) 上,创建objects目录:mkdir -p /mnt/instana/stanctl/objects在 node1 (
instana-1) 上,创建以下三个目录:mkdir -p /mnt/instana/stanctl/data mkdir -p /mnt/instana/stanctl/metrics mkdir -p /mnt/instana/stanctl/analytics
添加挂载路径
您必须为创建的目录添加挂载路径。 您可以在 " 识别主机上的磁盘 "中查看设备列表。
首先,将 node0 (instana-0) 和 node1 (instana-1) 上文件系统表 (fstab) 文件中的设备名称替换为 UUID(通用唯一标识符)。
有时,设备名称可能会在重启后更改,尤其是在连接多个磁盘时。 在这种情况下,磁盘和原始挂载路径之间可能会出现不匹配。 为避免这些问题,请在 fstab 文件中用 UUID(通用唯一标识符)替换设备名称。
用 UUID 更新 fstab 文件
要更新 fstab,请完成以下步骤:
- 根据存储容量,确定要用于每个目录的设备。 注意设备名称。
- 获取所有设备的 UUID。
请参阅以下命令和输出示例:blkid$ blkid /dev/sdb /dev/sdb: UUID="86ceb289-ba28-448d-b41f-71e647fc4536" BLOCK_SIZE="4096" TYPE="ext4" - 用设备 UUID 更新文件系统表 (fstab) 文件。
- 用你喜欢的文本编辑器打开
/etc/fstab文件。 - 将 UUID 添加到
/etc/fstab。 如以下示例所示,为每个设备添加 UUID:UUID=<device_uuid> /mnt/instana/stanctl/data ext4 discard,defaults,nofail 0 0 UUID=<device_uuid> /mnt/instana/stanctl/metrics ext4 discard,defaults,nofail 0 0 UUID=<device_uuid> /mnt/instana/stanctl/analytics ext4 discard,defaults,nofail 0 0 UUID=<device_uuid> /mnt/instana/stanctl/objects ext4 discard,defaults,nofail 0 0 - 保存文件。
- 用你喜欢的文本编辑器打开
然后,作为预防措施,在创建挂载路径前备份 fstab 文件。 在 node0 (instana-0) 和 node1 (instana-1) 上运行以下命令。
cp /etc/fstab /etc/fstab.backup
下面的示例命令使用了默认挂载路径和磁盘,我们在前面的章节中已将其用作示例。 根据您的环境,命令可能会有所不同。 此外,如果您在自定义路径下创建了目录 ,请确保使用这些路径。
如果创建了自定义挂载路径,请确保在安装自托管 Standard Edition 命令时将 --volume-<directory-name> 标志添加到 stanctl up --multi-node-enable 命令中。 例如,如果将 /data/analytics 添加为挂载路径,则使用 stanctl up --multi-node-enable --volume-analytics /data/analytics.
Ext4 命令示例。
- node0 (
instana-0) 的命令。echo "UUID=<device_vdb_uuid> /mnt/instana/stanctl/objects ext4 discard,defaults,nofail 0 0" >> /etc/fstab - node1 (
instana-1) 的命令。echo "UUID=<device_vdb_uuid> /mnt/instana/stanctl/analytics ext4 discard,defaults,nofail 0 0" >> /etc/fstab echo "UUID=<device_vdc_uuid> /mnt/instana/stanctl/metrics ext4 discard,defaults,nofail 0 0" >> /etc/fstab echo "UUID=<device_vdd_uuid> /mnt/instana/stanctl/data ext4 discard,defaults,nofail 0 0" >> /etc/fstab
- node0 (
XFS 示例命令
- node0 (
instana-0) 的命令。echo "UUID=<device_vdb_uuid> /mnt/instana/stanctl/objects xfs discard,defaults,nofail 0 0" >> /etc/fstab - node1 (
instana-1) 的命令。echo "UUID=<device_vdb_uuid> /mnt/instana/stanctl/analytics xfs discard,defaults,nofail 0 0" >> /etc/fstab echo "UUID=<device_vdc_uuid> /mnt/instana/stanctl/metrics xfs discard,defaults,nofail 0 0" >> /etc/fstab echo "UUID=<device_vdd_uuid> /mnt/instana/stanctl/data xfs discard,defaults,nofail 0 0" >> /etc/fstab
- node0 (
验证挂载路径
确认目录已加载到正确的磁盘上。 请参阅 " 准备附加磁盘 "获取设备名称。
lsblk <device name>
挂载文件系统
挂载所有文件系统。 在 node0 (instana-0) 和 node1 (instana-1) 上运行以下命令。
mount -a
内核参数
要成功安装 Instana 后端,必须在所有节点上正确设置以下内核参数。
vm.swappiness
将 vm.swappiness 设置为 0 ,以确保应用程序页面不会被移动到交换空间。
sh -c 'echo vm.swappiness=0 >> /etc/sysctl.d/99-stanctl.conf' && sysctl -p /etc/sysctl.d/99-stanctl.conf
fs.inotify.max_user_instances
将 fs.inotify.max_user_instances 设置为 8192 ,以确保系统最多允许 8192 个 inotify 实例。
sh -c 'echo fs.inotify.max_user_instances=8192 >> /etc/sysctl.d/99-stanctl.conf' && sysctl -p /etc/sysctl.d/99-stanctl.conf
透明巨页
永久禁用透明大页面(THP)进行内存管理。
- 如果您的主机是 Ubuntu 或 Debian ,请运行这些命令:
sed -i "s/\(GRUB_CMDLINE_LINUX=\".*\)\"/\1 transparent_hugepage=never\"/" "/etc/default/grub" update-grub - 如果您有 Red Hat® Enterprise Linux®、 CentOS Stream、Amazon Linux 或 Oracle Linux 主机,请运行此命令:
grubby --args="transparent_hugepage=never" --update-kernel ALL - 如果您的主机是 SUSE Linux Enterprise Server (SLES),请运行这些命令:
sed -i "s/\(GRUB_CMDLINE_LINUX=\".*\)\"/\1 transparent_hugepage=never\"/" "/etc/default/grub" grub2-mkconfig -o /boot/grub2/grub.cfg
这些更改需要重新启动系统才能生效。
重启后,验证 THP 是否已禁用。
cat /sys/kernel/mm/transparent_hugepage/enabled
以下输出显示 THP 已禁用。
always madvise [never]
软件包和环境变量
在某些主机上,您需要安装缺失的软件包或设置所需的环境变量和路径。
确保完成群集中所有节点上的任务。
亚马逊 Linux 2023 主机
在亚马逊 Linux 2023 中,缺少 container-selinux 和 k3s-selinux 软件包。 Standard Edition 安装程序需要这些配置才能不间断地安装 Instana。
安装
container-selinux软件包。dnf install -y container-selinux安装
k3s-selinux软件包。dnf install -y https://rpm.rancher.io/k3s/stable/common/centos/8/noarch/k3s-selinux-1.6-1.el8.noarch.rpm
Red Hat Enterprise Linux 和 CentOS Stream 主机
在 Red Hat Enterprise Linux 和 CentOS Stream 主机上, /usr/local/bin 目录默认不包含在 PATH 环境变量中。 Standard Edition 安装程序需要 PATH 中的这个目录,以便在安装过程中运行一些命令。
要在 PATH 环境变量中添加 /usr/local/bin 目录,请完成以下步骤:
在
.bashrc或.bash_profile文件中添加export PATH命令。echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bashrcOR
echo 'export PATH=$PATH:/usr/local/bin' >> ~/.bash_profile应用更改。 使用上一条命令中更新的文件名。
source ~/.bashrcOR
source ~/.bash_profile验证
/usr/local/bin目录是否包含在PATH环境变量中。echo $PATH
如果路径更新成功,就会在输出中看到 /usr/local/bin 。
租户和单位名称
安装 Instana 时,您必须提供租户和单元名称。
安装 Instana 后,不能更改租户或单元名称。
以下限制适用于租户和单位名称:
- 名称必须与以下正则表达式匹配:
^[a-z][a-z0-9]*$ - 名称不得超过 15 个字符。
- 名称必须以字母开头。
- 名称只能包含字母数字字符。
- 所有字符必须小写。
例如, test 是单位名称, marketing 是租户名称。
有关租户和单位的更多信息,请参见 units.instana.io.
联网要求
您的 Instana 域和集群中的主机必须可以从您的内部环境外部到达。 确保更新域名系统 (DNS) 设置 ,并在主机上设置防火墙规则。
DNS 设置
确保为 Instana 环境设置了域名和 DNS 区域。 然后,在区域中为以下域添加 DNS A 记录:
| 域 | 描述 | 示例名称 |
|---|---|---|
基础领域 <base_domain> |
您可以用来访问 Instana 的完全合格域名 (FQDN)。 指向主机的 IP 地址。 | instana.example.com |
代理接收器子域 agent-acceptor.<base_domain> |
Instana 代理流量的域名。 指向主机的 IP 地址。 | agent-acceptor.instana.example.com |
OTLP HTTP 受体子域 otlp-http.<base_domain> |
OpenTelemetry 收集器 OTLP/HTTP 流量的域名。 指向主机的 IP 地址。 |
otlp-http.instana.example.com |
OTLP gRPC 受体子域 otlp-grpc.<base_domain> |
OpenTelemetry 收集器 OTLP/gRPC 流量的域名。 指向主机的 IP 地址。 |
otlp-grpc.instana.example.com |
租户和单位子域 <unit-name>-<tenant-name>.<base_domain> |
单位及其租户的域名。 指向主机的 IP 地址。 | test-marketing.instana.example.com |
有关添加 DNS A 记录的详细步骤,请参阅域名注册商的文档。
如果只想对所有入口流量使用 <base_domain> ,请参阅 " 使用单个域进行配置 "。
在多节点集群中,基域指向 node0 (instana-0) 的 IP 地址。有关 IP 地址要求的更多信息,请参阅 IP 地址。
防火墙规则
某些 Linux 分发版可能与防火墙有潜在冲突或限制。 这些冲突可能会影响安装所需的网络通信和服务发现。 因此,如果您的防火墙是开放的,请在其中添加所需的端口和规则。
如果有外部防火墙,请参阅防火墙文档,了解如何打开端口。
要在 Standard Edition 上部署 Amazon Web Services ( AWS ),即使防火墙已禁用,也必须打开安全组中的所有端口。
完成以下步骤,打开所需的端口:
在 Ubuntu 主机上,在所有节点上运行以下命令。 在命令中使用节点的 IP 地址。
ufw allow 22/tcp ufw allow 80/tcp ufw allow 443/tcp ufw allow 8443/tcp ufw allow from <node0 (instana-0) IP> to any port 22 proto tcp ufw allow from <node0 (instana-0) IP> to any port 6443,10250,2379,2380,5001,9443,53 proto tcp ufw allow from <node0 (instana-0) IP> to any port 8472,53 proto udp ufw allow from <node1 (instana-1) IP> to any port 6443,10250,2379,2380,5001,9443,53 proto tcp ufw allow from <node1 (instana-1) IP> to any port 8472,53 proto udp ufw allow from <node2 (instana-2) IP> to any port 6443,10250,2379,2380,5001,9443,53 proto tcp ufw allow from <node2 (instana-2) IP> to any port 8472,53 proto udp ufw allow from 10.42.0.0/16 to any ufw allow from 10.43.0.0/16 to any ufw allow in on lo ufw allow out on lo ufw reload在 Debian, Red Hat Enterprise Linux, CentOS Stream、Amazon Linux, Oracle Linux 和 SUSE Linux Enterprise Server (SLES) 主机上,在所有节点上运行以下命令。 在命令中使用节点的 IP 地址。
firewall-cmd --permanent --add-port=22/tcp firewall-cmd --permanent --add-port=80/tcp firewall-cmd --permanent --add-port=443/tcp firewall-cmd --permanent --add-port=8443/tcp firewall-cmd --new-zone=internal-access --permanent firewall-cmd --permanent --zone=internal-access --add-source=<node0 (instana-0) IP> firewall-cmd --permanent --zone=internal-access --add-source=<node1 (instana-1) IP> firewall-cmd --permanent --zone=internal-access --add-source=<node2 (instana-2) IP> firewall-cmd --permanent --zone=internal-access --add-port=22/tcp firewall-cmd --permanent --zone=internal-access --add-port=6443/tcp firewall-cmd --permanent --zone=internal-access --add-port=10250/tcp firewall-cmd --permanent --zone=internal-access --add-port=2379/tcp firewall-cmd --permanent --zone=internal-access --add-port=2380/tcp firewall-cmd --permanent --zone=internal-access --add-port=5001/tcp firewall-cmd --permanent --zone=internal-access --add-port=8472/udp firewall-cmd --permanent --zone=internal-access --add-port=9443/tcp firewall-cmd --permanent --zone=internal-access --add-port=53/udp firewall-cmd --permanent --zone=internal-access --add-port=53/tcp firewall-cmd --permanent --zone=trusted --add-source=10.42.0.0/16 firewall-cmd --permanent --zone=trusted --add-source=10.43.0.0/16 firewall-cmd --permanent --zone=trusted --add-interface=lo firewall-cmd --reload
验证端口
验证 Required ports 中的端口是否已打开。
Ubuntu 东道主
使用以下命令验证被防火墙阻止的端口。 如果启用了防火墙,则该命令会列出被阻止的端口。
ufw status verbose
要打开一个端口,请运行以下命令:
ufw allow <port_number>
Debian, Red Hat Enterprise Linux, CentOS Stream, Amazon Linux, Oracle Linux, 和 SLES
要验证端口是否被防火墙封堵,请使用以下命令:
firewall-cmd --query-port=<port_number>/tcp
如果命令输出为 no ,则指定的端口已关闭。
要打开端口,请使用以下命令:
firewall-cmd --zone=public --add-port=<port_number>/tcp --permanent
firewall-cmd --reload
配置 HTTP 代理
定义 HTTP_PROXY、 HTTPS_PROXY 和 NO_PROXY 环境变量。
运行 stanctl up --multi-node-enable 命令安装 Standard Edition 时,安装会自动使用当前 shell 中的环境变量值。
使用以下命令定义环境变量:
HTTP_PROXY=http://your-proxy.example.com:<port_number>
HTTPS_PROXY=http://your-proxy.example.com:<port_number>
NO_PROXY=127.0.0.0/8,10.0.0.0/8,172.16.0.0/12,192.168.0.0/16
RHEL 和 CentOS Stream 主机上的 nm-cloud-setup 实用程序
在 Red Hat Enterprise Linux 和 CentOS Stream 主机上,如果启用了 nm-cloud-setup ,则必须在每个节点上禁用它,并重新启动节点。
请使用以下命令:
检查是否已启用
nm-cloud-setup。systemctl is-enabled nm-cloud-setup.service如果服务已禁用,命令返回
disabled,否则返回enabled。如果
nm-cloud-setup已禁用,请继续下一节。 如果nm-cloud-setup已启用,请禁用。systemctl disable nm-cloud-setup.service nm-cloud-setup.timer重新启动节点。
systemctl reboot
TLS 证书和密钥
Instana Standard Edition 需要传输层安全(TLS)证书和密钥。
必须为 DNS 设置部分指定的域签发证书。
如果不想指定任何证书,可以使用安装过程中生成的自签名证书。
SSH 配置
只有在多节点集群中才需要安全外壳 (SSH) 配置。
要安装 Instana,用户必须在不输入密码的情况下使用 SSH 从 instana-0 连接到 instana-1 和 instana-2。
- 根用户必须拥有所有三个节点的无密码 SSH 访问权限。
- 非 root 用户必须拥有访问所有三个节点的无密码 SSH 访问权限,并在每个节点上拥有 sudo 权限。
用户可以以 root 或具有 sudo 访问权限的用户身份运行 stanctl 命令。
完成以下步骤,生成 SSH 密钥并在三个节点之间共享。
如果群集中没有 SSH 密钥,请在 node0 (
instana-0) 上生成 SSH 密钥对。ssh-keygen -t rsa将公钥内容复制到 node1 (
instance-1) 和 node2 (instance-2) 的$HOME/.ssh/authorized_keys文件中。如果 node1 (
instana-1) 和 node2 (instana-2) 中的sshd服务监听的是另一个端口,而不是默认的 SSH 端口 22,请更新 node0 (instana-0) 中的$HOME/.ssh/config,以使用该端口。cat <<EOF | sudo tee -a ~/.ssh/config Host * port <alternate_port_number> EOF测试 node0 (
instana-0) 节点与其他两个节点之间的 SSH 连接。ssh <username>@<node_ip>
如果 SSH 连接成功,就会出现下一条命令的提示。 如果出现权限拒绝错误,请确保已将公钥复制到节点上正确的用户账户。
后续内容
继续安装 Instana。 更多信息,请参阅安装 Instana 后台和数据存储。