简介
本次围绕企业级分布式系统搭建与应用落地展开,详细记录了从基础中间件集群部署到商城应用上线的全流程操作。内容涵盖四大核心模块,通过 MyCat 构建 MySQL 读写分离集群,配置不同负载均衡策略实现数据库读写压力拆分,提升数据处理效率;其次部署 ZooKeeper 三节点集群,完成分布式协调服务搭建,保障系统高可用;再基于 ZooKeeper 集群部署 Kafka 消息队列,实现分布式消息传递与解耦;最后整合 MyCat、Redis、ZK、Kafka 等中间件,配置 Nginx 反向代理与负载均衡,完成商城应用的环境搭建与系统上线。
1.数据库构建读写分离集群
[root@node1 conf]# yum install java java-devel -y [root@node1 conf]# tar -zxvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz -C /usr/local/ chmod -R 777 /usr/local/mycat/ 在/etc/profile系统变量文件中添加mycat服务的系统变量,并生效变量。 [root@mycat ~]# echo export MYCAT_HOME=/usr/local/mycat/ >> /etc/profile [root@mycat ~]# source /etc/profile 修改配置文件权限 修改schema.xml的用户权限,命令如下 [root@node1 conf]# cd /usr/local/mycat/conf/ [root@mycat ~]# chown root:root schema.xml [root@node1 conf]# vi schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://io.mycat/"> <schema name="USERDB" checkSQLschema="true" sqlMaxLimit="100" dataNode="dn1"></schema> <dataNode name="dn1" dataHost="localhost1" database="test" /> <dataHost name="localhost1" maxCon="1000" minCon="10" balance="3" dbType="mysql" dbDriver="native" writeType="0" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="192.168.30.5:3306" user="root" password="000000"> <readHost host="hostS1" url="192.168.30.5:3306" user="root" password="000000" /> </writeHost> </dataHost> </mycat:schema> ---------------------------解释 sqlMaxLimit:配置默认查询数量 database:为真实数据库名 balance="0",不开启读写分离机制,所有读操作都发送到当前可用的writeHost上。 balance="1",全部的readHost与stand by writeHost参与select语句的负载均衡,简单的说,当双主双从模式(M1->S1,M2->S2,并且M1与M2互为主备),正常情况下,M2,S1,S2都参与select语句的负载均衡。 balance="2",所有读操作都随机的在writeHost、readhost上分发。 balance="3",所有读请求随机的分发到wiriterHost对应的readhost执行,writerHost不负担读压力,注意balance=3只在1.4及其以后版本有,1.3没有。 writeType="0",所有写操作发送到配置的第一个 writeHost,第一个挂了切到还生存的第二个writeHost,重新启动后已切换后的为准,切换记录在配置文件中:dnindex.properties . ---------------------------------------- [root@node1 conf]# vi server.xml #改 <property name="password">000000</property> <property name="schemas">USERDB</property> 删除95-99 [root@node1 conf]# /bin/bash /usr/local/mycat/bin/mycat start 或 ./mycat start [root@node1 conf]# netstat -ntpl Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 127.0.0.1:32000 0.0.0.0:* LISTEN 13232/java tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 522/rpcbind tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1194/sshd &