手动部署ob三副本集群
1. IP地址和机器规划
机器os :centos 7.5 8c12g
IP地址主机名机器角色说明192.168.32.111obce01observer+obproxy192.168.32.112obce02observer192.168.32.113obce03observer+obproxy192.168.32.114obce04observer新增,扩容192.168.32.115obce05observer+obproxy新增,扩容注意:机器只有一块磁盘,只演示在单盘上部署observer。
2. 初始化机器
2.1 修改内核参数- cat << EOF >> /etc/sysctl.conf
- net.core.somaxconn = 2048
- net.core.netdev_max_backlog = 10000
- net.core.rmem_default = 16777216
- net.core.wmem_default = 16777216
- net.core.rmem_max = 16777216
- net.core.wmem_max = 16777216
- net.ipv4.ip_local_port_range = 3500 65535
- net.ipv4.ip_forward = 0
- net.ipv4.conf.default.rp_filter = 1
- net.ipv4.conf.default.accept_source_route = 0
- net.ipv4.tcp_syncookies = 0
- net.ipv4.tcp_rmem = 4096 87380 16777216
- net.ipv4.tcp_wmem = 4096 65536 16777216
- net.ipv4.tcp_max_syn_backlog = 16384
- net.ipv4.tcp_fin_timeout = 15
- net.ipv4.tcp_max_syn_backlog = 16384
- net.ipv4.tcp_tw_reuse = 1
- net.ipv4.tcp_tw_recycle = 1
- net.ipv4.tcp_slow_start_after_idle=0
- vm.swappiness = 0
- vm.min_free_kbytes = 2097152
- vm.max_map_count=655360
- fs.aio-max-nr=1048576
- EOF
复制代码 然后执行使环境生效。
2.2 修改会话变量
将会话级别的最大栈空间大小设置为,最大文件句柄数设置为 655350,Core 文件大小设置为。
修改- /etc/security/limits.conf
复制代码 配置文件,如果已有设置值低于这个设置值- /etc/security/limits.conf
- cat << EOF >> /etc/security/limits.conf
- * soft nofile 655360
- * hard nofile 655360
- * soft nproc 655360
- * hard nproc 655360
- * soft core unlimited
- * hard core unlimited
- * soft stack unlimited
- * hard stack unlimited
- EOF
复制代码 2.3 关闭防火墙和selinux- systemctl disable firewalld
- systemctl stop firewalld
- systemctl status firewalld
- vi /etc/selinux/config
- SELINUX=disabled
- # 立即生效
- setenforce 0
- # 查看
- getenforce
复制代码 2.4 配置时钟源直接套用官方文档的配置:- vi /etc/chrony.conf
- # server 后面跟时间同步服务器
- # 使用pool.ntp.org 项目中的公共服务器。按 server 配置,理论上您想添加多少时间服务器都可以。
- # 或者使用 阿里云的 ntp 服务器
- # Please consider joining the pool (http://www.pool.ntp.org/join.html).
- server ntp.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
- server ntp.aliyun.com minpoll 4 maxpoll 10 iburst
- server ntp1.aliyun.com minpoll 4 maxpoll 10 iburst
- server ntp1.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
- server ntp10.cloud.aliyuncs.com minpoll 4 maxpoll 10 iburst
- # 如果是测试环境,没有时间同步服务器,那就选取一台配置为时间同步服务器。
- # 如果选中的是本机,则取消下面 server 注释
- #server 127.127.1.0
- # 根据实际时间计算出服务器增减时间的比率,然后记录到一个文件中,在系统重启后为系统做出最佳时间补偿调整。
- driftfile /var/lib/chrony/drift
- # chronyd 根据需求减慢或加速时间调整,
- # 在某些情况下系统时钟可能漂移过快,导致时间调整用时过长。
- # 该指令强制 chronyd 调整时期,大于某个阀值时步进调整系统时钟。
- # 只有在因 chronyd 启动时间超过指定的限制时(可使用负值来禁用限制)没有更多时钟更新时才生效。
- makestep 1.0 3
- # 将启用一个内核模式,在该模式中,系统时间每11分钟会拷贝到实时时钟(RTC)。
- rtcsync
- # Enable hardware timestamping on all interfaces that support it.
- # 通过使用hwtimestamp指令启用硬件时间戳
- #hwtimestamp eth0
- #hwtimestamp eth1
- #hwtimestamp *
- # Increase the minimum number of selectable sources required to adjust
- # the system clock.
- #minsources 2
- # 指定一台主机、子网,或者网络以允许或拒绝NTP连接到扮演时钟服务器的机器
- #allow 192.168.0.0/16
- #deny 192.168/16
- # 即使没有同步到时间源,也要服务时间
- local stratum 10
- # 指定包含NTP验证密钥的文件。
- #keyfile /etc/chrony.keys
- # 指定日志文件的目录。
- logdir /var/log/chrony
- # Select which information is logged.
- #log measurements statistics tracking
复制代码 启动服务- systemctl start chronyd.service
- systemctl status chronyd.service
复制代码
查看时间信息- 查看时间同步活动
- chronyc activity
- 查看时间服务器
- chronyc sources
- 查看同步状态
- chronyc sources -v
- 校准时间服务器:
- chronyc tracking
复制代码
连同时区一起配置了- timedatectl set-timezone Asia/Shanghai
- chronyc -a makestep
复制代码 2.5 创建用户并初始化目录
注意配置admin用户sudo权限- groupadd -g 500 admin
- useradd -g 500 -u 500 admin
- echo 'admin:admin' | chpasswd
- sudo vi /etc/sudoers
- # 新增一行
- admin ALL=(ALL) ALL
- mkdir /data
- mkdir /redo
- chown -R admin:admin /data
- chown -R admin:admin /redo
- su - admin
- mkdir -p /home/admin/oceanbase/store/obcluster /data/obcluster/{sstable,etc3} /redo/obcluster/{clog,ilog,slog,etc2}
- for f in {clog,ilog,slog,etc2}; do ln -s /redo/obcluster/$f /home/admin/oceanbase/store/obcluster/$f ; done
- for f in {sstable,etc3}; do ln -s /data/obcluster/$f /home/admin/oceanbase/store/obcluster/$f; done
复制代码 3. 安装observer
下载rpm包并上传安装(从官网找下载链接)- yum install lrzsz -y
- rpm -ivh oceanbase-ce-libs-3.1.1-4.el7.x86_64.rpm
- rpm -ivh oceanbase-ce-3.1.1-4.el7.x86_64.rpm
- su - admin
- echo 'export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/admin/oceanbase/lib' >> ~/.bash_profile
- . ~/.bash_profile
- # 注意:zone的名称要根据机器不同而改变,下面是zone1的启动命令
- cd /home/admin/oceanbase && bin/observer -i ens33 -p 2881 -P 2882 -z zone1 -d /home/admin/oceanbase/store/obcluster -r '192.168.32.111:2882:2881;192.168.32.112:2882:2881;192.168.32.113:2882:2881' -c 16384 -n obcluster -o "memory_limit=8G,cache_wash_threshold=1G,__min_full_resource_pool_memory=268435456,system_memory=3G,memory_chunk_cache_size=128M,cpu_count=16,net_thread_count=8,datafile_size=10G,stack_size=1536K,config_additional_dir=/data/obcluster/etc3;/redo/obcluster/etc2" -d /home/admin/oceanbase/store/obcluster
复制代码 启动之后,检查进程是否运行正常,使用检查端口开启情况
有兴趣的可以查看日志,看一下observer在初始化启动过程中都做了哪些操作‘。- cd /home/admin/oceanbase/log
- tail -f observer.log
- # 查看warning级别以上的日志
- tail -n 20 observer.log.wf
复制代码 安装obclient
安装包从官网下载并上传到机器上。- rpm -ivh libobclient-2.0.0-2.el7.x86_64.rpm
- rpm -ivh obclient-2.0.0-2.el7.x86_64.rpm
复制代码 4. 集群初始化(bootstrap)
在新部署的机器上是没有密码的,输密码直接回车即可,或者去掉参数- obclient -h 127.0.0.1 -u root -P 2881 -p -c -A
- set session ob_query_timeout=1000000000; alter system bootstrap ZONE 'zone1' SERVER '192.168.32.111:2882', ZONE 'zone2' SERVER '192.168.32.112:2882', ZONE 'zone3' SERVER '192.168.32.113:2882' ;
复制代码
使用root@sys用户登录数据库并设置密码:- obclient -h 127.0.0.1 -u root@sys -P 2881 -c -A
- alter user root identified by 'root123';
复制代码
在其他机器上测试:
测试成功。
5. 部署obproxy(以单节点为例)
从官网下载并安装obproxy软件包- rpm -ivh obproxy-3.2.0-1.el7.x86_64.rpm
复制代码 启动obproxy- cd /home/admin/obproxy-3.2.0 && bin/obproxy -r "192.168.32.111:2881;192.168.32.112:2881;192.168.32.113:2881" -p 2883 -o "enable_strict_kernel_release=false,enable_cluster_checkout=false,enable_metadb_used=false" -c obcluster
复制代码
尝试连接,又出现了经典报错:
(官方文档给了解释,此处只为模拟问题)- ERROR 2013 (HY000): Lost connection to MySQL server at 'reading authorization packet', system error: 11
复制代码
此时使用2881端口是连得上的:
说明问题出在obproxy与observer间的通信上。
需要设置root@proxysys的密码。
- obclient -h 127.0.0.1 -u root@proxysys -P 2883
- # 设置管理obproxy的root用户密码
- alter proxyconfig set obproxy_sys_password = 'root123' ;
- # 设置与observer连接的用户的密码
- alter proxyconfig set observer_sys_password = 'root123' ;
复制代码 设置之后,还需要修改observer里proxyro用户的密码。
登录observer,查看用户- obclient -h 127.0.0.1 -u root@sys -P 2881 -c -A -proot123 -Doceanbase
- select user_id,user_name from __all_user;
复制代码
发现并没有这个用户,需要创建出来并授权(只读用户,select即可):- create user proxyro identified by 'root123';
- grant select on *.* to proxyro;
复制代码 再次测试发现可以连接了!
6. 创建租户并生成一些数据
6.1 创建unit和资源池、租户- create resource unit lcxunit max_cpu=2,max_memory='2G',max_iops=10000,max_disk_size='2G',max_session_num=2000;
- create resource pool lcxpool unit='lcxunit',unit_num=1;
- CREATE TENANT IF NOT EXISTS test_tenant charset='utf8mb4', replica_num=1, zone_list=('zone1'), primary_zone='zone1', resource_pool_list=('lcxpool') SET ob_tcp_invited_nodes='%';
- #删除租户
- DROP TENANT tenant_name [FORCE]
复制代码
查看租户信息:
查看资源分配情况和- SELECT a.zone,concat(a.svr_ip,':',a.svr_port) observer, cpu_total, (cpu_total-cpu_assigned) cpu_free, round(mem_total/1024/1024/1024) mem_total_gb, round((mem_total-mem_assigned)/1024/1024/1024) mem_free_gb, usec_to_time(b.last_offline_time) last_offline_time, usec_to_time(b.start_service_time) start_service_time, b.status FROM __all_virtual_server_stat a JOIN __all_server b ON (a.svr_ip=b.svr_ip AND a.svr_port=b.svr_port) ORDER BY a.zone, a.svr_ip;
- SELECT t1.name resource_pool_name, t2.`name` unit_config_name, t2.max_cpu, t2.min_cpu, round(t2.max_memory/1024/1024/1024) max_mem_gb, round(t2.min_memory/1024/1024/1024) min_mem_gb, t3.unit_id, t3.zone, concat(t3.svr_ip,':',t3.`svr_port`) observer,t4.tenant_id, t4.tenant_name FROM __all_resource_pool t1 JOIN __all_unit_config t2 ON (t1.unit_config_id=t2.unit_config_id) JOIN __all_unit t3 on (t1.`resource_pool_id` = t3.`resource_pool_id`) LEFT JOIN __all_tenant t4 on (t1.tenant_id=t4.tenant_id) ORDER BY t1.`resource_pool_id`, t2.`unit_config_id`, t3.unit_id;
复制代码
同样新创建的租户root用户没有密码,登录后创建数据库生成一些数据
使用sysbench生成数据
查看生成结果
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
来源:https://www.jb51.net/database/318857jsh.htm
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |