ToB企服应用市场:ToB评测及商务社交产业平台

标题: GreatSQL MGR 使用 IPv6 连接 [打印本页]

作者: 麻花痒    时间: 2022-12-21 11:40
标题: GreatSQL MGR 使用 IPv6 连接
1.概述

本文基于 GreatSQL 8.0.25-16 ,以下测试均使用此版本。
MySQL支持IPv6,创建用户时主机部分可以指定IPv6的地址,可以通过IPv6连接到MySQL服务器,从MySQL 8.0.14开始,组复制组成员可以在组内使用IPv6地址进行通信。
此次在测试环境中使用IPv6地址进行MGR的部署,分享一下使用IPv6部署MGR时,设置关于MGR参数需注意的地方。
2.查看本机IPv6地址

执行 ip a 在输出内容中查找当前使用的网卡的IPv6地址
  1. shell>  ip a
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4.     inet 127.0.0.1/8 scope host lo
  5.        valid_lft forever preferred_lft forever
  6.     inet6 ::1/128 scope host
  7.        valid_lft forever preferred_lft forever
  8. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  9.     link/ether 00:16:**:**:**:b4 brd ff:ff:ff:ff:ff:ff
  10.     inet 192.168.***.***/20 brd 192.168.***.255 scope global noprefixroute dynamic eth0
  11.        valid_lft 259198sec preferred_lft 259198sec
  12.     inet6 fe80::216:3eff:fed0:bab4/64 scope link
  13.        valid_lft forever preferred_lft forever
复制代码
3.配置ipv6静态地址

由于上面的本地链路地址我们不能直接使用,因此我们可以配置一个IPv6的静态地址,每台机器都要配置。
这里我们使用IPv6(ULA,unique local address)唯一本地地址,该地址类似于IPv4中的私网地址,使用FD00:/8这个网段的地址。
  1. shell> vim /etc/sysconfig/network-scripts/ifcfg-eth0
  2. ....
  3. IPV6INIT=yes
  4. IPV6_AUTOCONF=no
  5. IPV6_FAILURE_FATAL=no
  6. IPV6ADDR=fd00::10/8
复制代码
添加上面的内容到 ifcfg-eth0 文件。
4.重启网络服务
  1. shell> systemctl restart network
复制代码
5.再次查看本地IPv6地址
  1. shell> ip a
  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
  3.     link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
  4.     inet 127.0.0.1/8 scope host lo
  5.        valid_lft forever preferred_lft forever
  6.     inet6 ::1/128 scope host
  7.        valid_lft forever preferred_lft forever
  8. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
  9.     link/ether 00:16:**:**:**:b4 brd ff:ff:ff:ff:ff:ff
  10.     inet 192.168.***.***/20 brd 192.168.***.255 scope global noprefixroute dynamic eth0
  11.        valid_lft 259198sec preferred_lft 259198sec
  12.     inet6 fd00::10/8 scope global noprefixroute
  13.        valid_lft forever preferred_lft forever
  14.     inet6 fe80::216:3eff:fed0:bab4/64 scope link noprefixroute
  15.        valid_lft forever preferred_lft forever
复制代码
可以看到配置的IPv6地址已经生效,同样的方式配置其他机器。
6.使用IPv6部署MGR需要注意的地方

这里主要说明一下,使用IPv6部署MGR时,设置关于MGR参数需注意的地方。部署MGR的步骤,我们这里不再重复了,可以参考GreatSQL安装部署MGR集群文档:https://gitee.com/GreatSQL/GreatSQL-Doc/blob/master/deep-dive-mgr/deep-dive-mgr-03.md
(1)设置 bind_address 参数

设置bind_address系统变量,以指定实例接受的TCP/IP连接。
  1. [mysqld]
  2. bind_address = *
复制代码
设置为 * 值(默认值)或 ::,表示允许所有服务器主机同时连接IPv4和IPv6,也可以设置为特定的IP地址列表。
(2)IPv6地址需要用 [] 括起来

在设置参数 group_replication_local_address 和 group_replication_group_seeds 的值时,需要将每个IPv6的地址用 [] 括起来,如下所示:
  1. [mysqld]
  2. group_replication_local_address='[fd00::10]:33061';
  3. group_replication_group_seeds='[fd00::10]:33061,[fd00::20]:33061,[fd00::30]:33061';
复制代码
(3)手动指定allowlist

由于MGR默认的allowlist范围如下:
  1. IPv4 (as defined in RFC 1918)
  2. 10/8 prefix       (10.0.0.0 - 10.255.255.255) - Class A
  3. 172.16/12 prefix  (172.16.0.0 - 172.31.255.255) - Class B
  4. 192.168/16 prefix (192.168.0.0 - 192.168.255.255) - Class C
  5. IPv6 (as defined in RFC 4193 and RFC 5156)
  6. fc00:/7 prefix    - unique-local addresses
  7. fe80::/10 prefix  - link-local unicast addresses
  8. 127.0.0.1 - localhost for IPv4
  9. ::1       - localhost for IPv6
复制代码
我们所设置的IPv6地址不在这个范围,所以需要将这些IPv6的地址加入allowlist,可以将每个IPv6的地址写入,也可以使用 CIDR notation 这种方法表示。
  1. [mysqld]
  2. group_replication_ip_allowlist='fd00::/8';
复制代码
7.使用IPv6本地主机地址连接

(1)使用管理员账户登录,创建可以在本机通过IPv6回环地址(::1)进行连接的账户
  1. mysql> create user test1@'::1' identified by 'greatsql';
复制代码
(2)登录test1账户
  1. shell> mysql -utest1 -pgreatsql -h ::1 -P3306
  2. mysql> select user(),current_user();
  3. +-----------+----------------+
  4. | user()    | current_user() |
  5. +-----------+----------------+
  6. | test1@::1 | test1@::1      |
  7. +-----------+----------------+
  8. 1 row in set (0.00 sec)
复制代码
8.使用IPv6远程主机地址连接

(1)使用管理员账户登录,为IPv6地址为 fd00::20 的主机创建可以连接的账户
  1. mysql> create user test2@'fd00::20' identified by 'greatsql';
复制代码
(2)登录test2账户
  1. shell> mysql -utest2 -pgreatsql -h fd00::20 -P3306
  2. mysql> select user(),current_user();
  3. +----------------+----------------+
  4. | user()         | current_user() |
  5. +----------------+----------------+
  6. | test2@fd00::20 | test2@fd00::20 |
  7. +----------------+----------------+
  8. 1 row in set (0.00 sec)
复制代码
Enjoy GreatSQL
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4