# Magma 扩容 本节将描述 Magma 扩容的方法,并假设原有集群主节点分别为 oushu1,oushu2,oushu3,Magma 节点为Magma1,Magma2,Magma3,新添加的节点为 Magma4. ## 安装 配置yum源,安装lava命令行管理工具, yum 源需自行配置 ```sh ssh Magma4 # 从yum源所在机器(假设为192.168.1.10)获取repo文件 scp root@192.168.1.10:/etc/yum.repos.d/oushu.repo /etc/yum.repos.d/oushu.repo # 追加yum源所在机器信息到/etc/hosts文件 yum clean all yum makecache yum install -y lava ``` 使用 yum install 的安装方式: ```bash yum install -y oushudb ``` ## 配置 **1. 系统配置** 在 magma4 节点的系统配置文件 /etc/sysctl.conf 中追加如下内容: ```bash kernel.shmmax = 3000000000 kernel.shmmni = 4096 kernel.shmall = 4000000000 kernel.sem = 250 512000 100 2048 kernel.sysrq = 1 kernel.core_uses_pid = 1 kernel.msgmnb = 65536 kernel.msgmax = 65536 kernel.msgmni = 2048 net.ipv4.tcp_syncookies = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_max_syn_backlog = 200000 net.ipv4.conf.all.arp_filter = 1 net.ipv4.ip_local_port_range = 10000 65535 net.core.netdev_max_backlog = 200000 net.netfilter.nf_conntrack_max = 524288 fs.nr_open = 3000000 kernel.threads-max = 798720 kernel.pid_max = 798720 net.core.rmem_max=2097152 net.core.wmem_max=2097152 net.core.somaxconn=4096 kernel.core_pattern=/data1/oushudb/cores/core-%e-%s-%u-%g-%p-%t ``` 如果集群计划部署在麒麟操作系统上,需要额外追加网络配置参数: ```bash net.ipv4.tcp_tw_recycle = 0 net.ipv4.tcp_tw_reuse = 1 net.ipv4.ipfrag_high_thresh = 41943040 net.ipv4.ipfrag_low_thresh = 40894464 net.ipv4.udp_mem = 9242685 12323580 18485370 net.ipv4.tcp_mem = 9240912 12321218 18481824 ``` 为了方便软件调试分析,我们建议允许 Magma 生成 coredump 文件。 创建文件 ` /etc/security/limits.d/oushu.conf` ```bash touch /etc/security/limits.d/oushu.conf ``` 并向其写入内容: ```bash * soft nofile 1048576 * hard nofile 1048576 * soft nproc 131072 * hard nproc 131072 oushu soft core unlimited oushu hard core unlimited ``` 配置原始OushuDB 集群节点IP到节点的 `/etc/hosts` 中 ```bash echo 192.168.1.11 oushu1 >>/etc/hosts echo 192.168.1.12 oushu2 >>/etc/hosts echo 192.168.1.13 oushu3 >>/etc/hosts ``` 配置 Magma 集群节点IP到节点的`/etc/hosts`中 ```bash echo 192.168.1.21 magma1 >>/etc/hosts echo 192.168.1.22 magma2 >>/etc/hosts echo 192.168.1.23 magma3 >>/etc/hosts ``` **2. 集群配置** 在 oushu 用户下,创建 `magmahosts` 文件,包含 Magma 集群中所有机器: ```bash touch ~/magmahosts ``` 编写 `magmahosts` 文件内容如下: ``` magma1 magma2 magma3 magma4 ``` 与集群进行交换ssh-key `oushudb ssh-exkeys -f ~/magmahostfile` 添加本机 IP 到集群内 hosts 中: ``` sudo su root lava ssh -f ~/magmahosts -e "echo '192.168.1.24 magma4' >>/etc/hosts" ``` **3. 配置文件** 此步骤需要按照部署计划,创建存储文件夹。 例如配置 catalog 集群的文件夹: ``` mkdir -p /data1/oushudb/magma_catalog chown -R oushu:oushu /data1/oushudb ``` 配置生成 core 的文件目录: ``` mkdir -p /data1/oushudb/cores chmod 777 /data1/oushudb/cores ``` **4. 修改配置文件** 从原有数据库 magma 节点的 `/usr/local/oushu/conf/`中获取所有配置文件,并保存到本节点相同路径下。 修改 oushudb-topology.yaml 文件: 假设其为: ```yaml nodes: - id: m1 addr: 192.168.1.21 label: { region: "regionA", zone: "zoneA"} - id: m2 addr: 192.168.1.22 label: { region: "regionA", zone: "zoneA"} - id: m3 addr: 192.168.1.23 label: { region: "regionA", zone: "zoneA"} vsc: - name: vsc_catalog nodes: m1,m2,m3 port: 6666 num_ranges: 3 num_replicas: 3 data_dir: /data1/oushudb/magma_catalog log_dir: replica_locations: "regionA.zoneA:3" leader_preferences: "regionA.zoneA" conf_path: - name: vsc_default nodes: m1,m2,m3 port: 6676 num_ranges: 18 num_replicas: 3 data_dir: /data1/oushudb/magma_data log_dir: replica_locations: "regionA.zoneA:3" leader_preferences: "regionA.zoneA" conf_path: ``` 将本节点添加到 nodes 下,并在对应 vsc 内添加本节点,例如为 vsc_catalog 添加节点: ```yaml nodes: - id: m1 addr: 192.168.1.21 label: { region: "regionA", zone: "zoneA"} - id: m2 addr: 192.168.1.22 label: { region: "regionA", zone: "zoneA"} - id: m3 addr: 192.168.1.23 label: { region: "regionA", zone: "zoneA"} - id: m4 addr: 192.168.1.24 label: { region: "regionA", zone: "zoneA"} vsc: - name: vsc_catalog nodes: m1,m2,m3,m4 port: 6666 num_ranges: 3 num_replicas: 3 data_dir: /data1/oushudb/magma_catalog log_dir: replica_locations: "regionA.zoneA:3" leader_preferences: "regionA.zoneA" conf_path: ..... ``` 将 magma-topology.yaml 发送到其他节点: ``` lava scp -f ~/magmahosts /usr/local/oushu/conf/magma-topology.yaml =:/usr/local/oushu/conf/ ``` ## 初始化 在 oushu 用户下,本地执行以下命令启动节点,例如为 vsc_catalog 添加节点: ```bash sudo su oushu magma start node --vsc=‘vsc_catalog’. ``` 在 magma 集群内,执行参数重载命令: ```bash magma reload vscluster --vsc=‘vsc_catalog’ ``` ## 验证 在 magma 集群内,执行`magma status` 检查 magma 状态,检查本节点已经出现,并且所有 rg 均处于服务状态即可,例如: ``` nodeaddress: 192.168.1.24:6666 topo: regionA.zoneA vscname: vsc_catalog compactstatus: 0,0,0,0 healthy: healthy replicastatus: RG:id=1,isLeader=0,raftGroupId=raft_0_group,raftMembers=(1,0,2),status=serving RG:id=4,isLeader=0,raftGroupId=raft_1_group,raftMembers=(4,3,5),status=serving RG:id=6,isLeader=1,raftGroupId=raft_2_group,raftMembers=(6,7,8),status=serving RG:id=11,isLeader=0,raftGroupId=raft_3_group,raftMembers=(11,10,9),status=serving ```