环境准备:
三台节点
主机名 IP 
gpmall-1 192.168.62.10
gpmall-2 192.168.62.20
gpmall-3 192.168.62.30
[root@gpmall-1 ~]# hostnamectl  set-hostname mycat
[root@localhost ~]# bash
[root@localhost ~]# hostnamectl set-hostname db1
[root@localhost ~]# bash
[root@localhost ~]# hostnamectl set-hostname db2
[root@localhost ~]# bash
HOSTS
[root@mycat ~]# vi /etc/hosts
192.168.62.10    mycat
192.168.62.20    db1
192.168.62.30    db2
192.168.62.10    zookeeper1
192.168.62.20    zookeeper2
192.168.62.30    zookeeper3
192.168.62.10    redis
192.168.62.10    mysql.mall
192.168.62.10    zk1.mall
192.168.62.20    zk2.mall
192.168.62.30    zk3.mall
192.168.62.10    kafka1.mall
192.168.62.20    kafka2.mall
192.168.62.30    kafka3.mall
192.168.62.10    redis.mall
[root@db1 ~]# vi /etc/hosts
192.168.62.10    mycat
192.168.62.20    db1
192.168.62.30    db2
192.168.62.10    zookeeper1
192.168.62.20    zookeeper2
192.168.62.30    zookeeper3
192.168.62.10    redis
192.168.62.10    mysql.mall
192.168.62.10    zk1.mall
192.168.62.20    zk2.mall
192.168.62.30    zk3.mall
192.168.62.10    kafka1.mall
192.168.62.20    kafka2.mall
192.168.62.30    kafka3.mall
192.168.62.10    redis.mall
[root@db2 ~]# vi /etc/hosts
192.168.62.10    mycat
192.168.62.20    db1
192.168.62.30    db2
192.168.62.10    zookeeper1
192.168.62.20    zookeeper2
192.168.62.30    zookeeper3
192.168.62.10    redis
192.168.62.10    mysql.mall
192.168.62.10    zk1.mall
192.168.62.20    zk2.mall
192.168.62.30    zk3.mall
192.168.62.10    kafka1.mall
192.168.62.20    kafka2.mall
192.168.62.30    kafka3.mall
192.168.62.10    redis.mall
关闭防火墙与SELINUX
[root@mycat ~]#systemctl  stop firewalld && systemctl disable firewalld
[root@db1 ~]# systemctl  stop firewalld && systemctl disable firewalld
[root@db2 ~]# systemctl  stop firewalld && systemctl disable firewalld
[root@mycat ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/'g /etc/selinux/config
[root@mycat ~]# setenforce 0
[root@db1 ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/'g /etc/selinux/config 
[root@db1 ~]# setenforce 0
[root@db2 ~]#  sed -i 's/SELINUX=enforcing/SELINUX=disabled/'g /etc/selinux/config 
[root@db2 ~]# setenforce 0
YUM源
上传gpmall-repo 到 /mnt/下
DB1
[root@db1 ~]# mkdir /mnt/centos
[root@db1 ~]# mount /dev/sr0 /mnt/centos/
[root@db1 ~]# cd /etc/yum.repos.d/
[root@db1 yum.repos.d]# rm -rf *
[root@db1 yum.repos.d]# vi loacl.repo
[centos]
name=centos
baseurl=file:///mnt/centos
gpgcheck=0
enabled=1


[gpmall]
name=gpmall
baseurl=file:///mnt/gpmall-repo
gpgcheck=0
enabled=1
[root@db1 yum.repos.d]# yum repolist
[root@db1 yum.repos.d]# yum install -y vsftpd
[root@db1 yum.repos.d]# vi /etc/vsftpd/vsftpd.conf 
anon_root=/mnt/
[root@db1 yum.repos.d]# systemctl restart vsftpd
[root@db1 yum.repos.d]# systemctl enable vsftpd

DB2

[root@db2 ~]# cd /etc/yum.repos.d/
[root@db2 yum.repos.d]# rm -rf *
[root@db2 yum.repos.d]# vi loacl.repo

[centos]
name=centos
baseurl=ftp://db1/centos
gpgcheck=0
enabled=1


[gpmall]
name=gpmall
baseurl=ftp://db1/gpmall-repo
gpgcheck=0
enabled=1
[root@db2 yum.repos.d]# yum repolist

MYCAT
[root@mycat ~]# cd /etc/yum.repos.d/
[root@mycat ~]# rm -rf *
[root@mycat yum.repos.d]# vi local.repo
[centos]
name=centos
baseurl=ftp://db1/centos
gpgcheck=0
enabled=1


[gpmall]
name=gpmall
baseurl=ftp://db1/gpmall-repo
gpgcheck=0
enabled=1 


1.MySQL数据主从搭建(业务数据的备份)
安装数据库
DB1
[root@db1 ~]# yum install -y mariadb-server
[root@db1 ~]# systemctl start mariadb && systemctl enable mariadb
初始化数据库
[root@db1 yum.repos.d]# mysql_secure_installation 
Enter current password for root (enter for none):   回车
Set root password? [Y/n] y
New password: 123456
Re-enter new password: 123456
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y

更改数据库配置文件
[root@db1 ~]# vi /etc/my.cnf
[mysqld]
log_bin = mysql-bin
binlog_ignore_db = mysql
server_id = 20
[root@db1 ~]# systemctl restart mariadb
[root@db1 ~]# mysql -uroot -p123456
MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by '123456';
MariaDB [(none)]> grant replication slave on *.* to 'user'@'db2' identified by '123456';
MariaDB [(none)]> flush privileges ;


DB2
[root@db2 ~]# yum install -y mariadb-server
[root@db2 ~]# systemctl start mariadb && systemctl enable mariadb
初始化数据库
[root@db1 yum.repos.d]# mysql_secure_installation 
Enter current password for root (enter for none):   回车
Set root password? [Y/n] y
New password: 123456
Re-enter new password: 123456
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] n
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
更改数据库配置文件
[root@db2 yum.repos.d]# vi /etc/my.cnf
[mysqld]
log_bin = mysql-bin
binlog_ignore_db = mysql
server_id = 30
[root@db2 ~]# systemctl restart mariadb
[root@db2 ~]# mysql -uroot -p123456
MariaDB [(none)]> grant all privileges on *.* to root@'%' identified by '123456';
MariaDB [(none)]> change master to master_host='db1',master_user='user',master_password='123456';
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G

验证
DB1
MariaDB [(none)]> create database test ;
DB2
MariaDB [(none)]> show databases;
查看是否新建

2.mycat读写分离搭建 (  提升查询效率   )
[root@mycat ~]# yum install -y java java-devel
上传安装包Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz
[root@mycat ~]# tar xvf Mycat-server-1.6-RELEASE-20161028204710-linux.tar.gz  -C /usr/local/
[root@mycat ~]# cd /usr/local/mycat/conf/
[root@mycat 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.62.20:3306" user="root" password="123456">
        <readHost host="hostS1" url="192.168.62.30:3306" user="root" password="123456" />
    </writeHost>
</dataHost>
</mycat:schema>
!!!注意IP
修改权限
[root@mycat conf]# chown root:root schema.xml 
[root@mycat conf]# vi server.xml
删除
          <!-- 表级 DML 权限设置 -->
                <!--
                <privileges check="false">
                        <schema name="TESTDB" dml="0110" >
                                <table name="tb01" dml="0000"></table>
                                <table name="tb02" dml="1111"></table>
                        </schema>
                </privileges>
                 -->
        </user>

        <user name="user">
                <property name="password">user</property>
                <property name="schemas">TESTDB</property>
                <property name="readOnly">true</property>
修改
<property name="schemas">USERDB</property>

启动
[root@mycat conf]# cd /usr/local/mycat/bin/
[root@mycat bin]# ./mycat start
验证
[root@mycat ~]# yum install -y net-tools
[root@mycat ~]# netstat -antpl | grep 8066
3.zookeeper分布式服务
hostnamectl set-hostname zookeeper1
hostnamectl set-hostname zookeeper2
hostnamectl set-hostname zookeeper3

安装JAVA环境
[root@zookeeper2 ~]# yum install -y java java-devel
[root@zookeeper3 ~]# yum install -y java java-devel
上传安装包第一节点
root@zookeeper1 ~]# tar xvf zookeeper-3.4.14.tar.gz -C /usr/local/
[root@zookeeper1 ~]# cd /usr/local/zookeeper-3.4.14/conf/
[root@zookeeper1 conf]# mv zoo_sample.cfg zoo.cfg 
[root@zookeeper1 conf]# vi zoo.cfg 
server.1=192.168.62.10:2888:3888
server.2=192.168.62.20:2888:3888
server.3=192.168.62.30:2888:3888
[root@zookeeper1 conf]# mkdir /tmp/zookeeper
[root@zookeeper1 conf]# echo 1 >/tmp/zookeeper/myid
[root@zookeeper1 ~]# scp -r /usr/local/zookeeper-3.4.14/ db1:/usr/local/
[root@zookeeper1 ~]# scp -r /usr/local/zookeeper-3.4.14/ db2:/usr/local/

[root@zookeeper2 ~]# mkdir /tmp/zookeeper
[root@zookeeper2 ~]# echo 2 > /tmp/zookeeper/myid

[root@zookeeper1 ~]# /usr/local/zookeeper-3.4.14/bin/zkServer.sh start
root@zookeeper2 ~]# /usr/local/zookeeper-3.4.14/bin/zkServer.sh start
[root@zookeeper3 ~]# /usr/local/zookeeper-3.4.14/bin/zkServer.sh start


4.Kafka分布式消息队列( 缓存消息 )
上传KAKA压缩包到第一节点
[root@zookeeper1 ~]# tar xvf kafka_2.11-1.1.1.tgz  -C /usr/local/
[root@zookeeper1 ~]# cd /usr/local/kafka_2.11-1.1.1/config/
broker.id=1
#listeners=PLAINTEXT://:9092 修改为 listeners=PLAINTEXT://192.168.62.10:9092

[root@zookeeper1 ~]# scp -r /usr/local/kafka_2.11-1.1.1/ db1:/usr/local/
[root@zookeeper1 ~]# scp -r /usr/local/kafka_2.11-1.1.1/ db2:/usr/local/
[root@zookeeper2 ~]# vi /usr/local/kafka_2.11-1.1.1/config/server.properties
broker.id=2  listeners=PLAINTEXT://192.168.62.20:9092
[root@zookeeper3 ~]# vi /usr/local/kafka_2.11-1.1.1/config/server.properties
broker.id=3 listeners=PLAINTEXT://192.168.62.30:9092

启动

[root@zookeeper3 ~]# /usr/local/kafka_2.11-1.1.1/bin/kafka-server-start.sh -daemon /usr/local/kafka_2.11-1.1.1/config/server.properties 
jps 检查
测试服务
zookeeper1节点:
/usr/local/kafka_2.11-1.1.1/bin/kafka-topics.sh  --create --zookeeper 192.168.62.10:2181 --replication-factor 1 --partitions 1 --topic test
zookeeper2节点:
/usr/local/kafka_2.11-1.1.1/bin/kafka-topics.sh  --list --zookeeper 192.168.62.20:2181
zookeeper3节点:
/usr/local/kafka_2.11-1.1.1/bin/kafka-topics.sh  --list --zookeeper 192.168.62.20:2181
test
测试成功。

5.redis缓存数据库(安装在mycat节点)
DB1 创建gpmall 数据库
上传数据
MariaDB [gpmall]> source /root/gpmall.sql

yum install redis –y

vi /etc/redis.conf
#bind 127.0.0.1
protected-mode  yes-->no

systemctl restart redis
systemctl enable redis

2、在db1,db2:分别执行
上传JAVA 包
java -version
nohup java -jar user-provider-0.0.1-SNAPSHOT.jar &
nohup java -jar shopping-provider-0.0.1-SNAPSHOT.jar &
nohup java -jar gpmall-user-0.0.1-SNAPSHOT.jar &
nohup java -jar gpmall-shopping-0.0.1-SNAPSHOT.jar &
3、网站前端
mycat(192.168.62.10):
yum install nginx -y
rm -rf /usr/share/nginx/html/*
cp -rvf dist/* /usr/share/nginx/html/

vi /etc/nginx/conf.d/default.conf
        upstream myuser {
        server 192.168.62.20:8082;
        server 192.168.62.30:8082;
        ip_hash;
    }

        upstream myshopping {
        server 192.168.62.20:8081;
        server 192.168.62.30:8081;
        ip_hash;
        }
       

server {
    location /user {
        proxy_pass http://myuser;
        }

        location /shopping {
        proxy_pass http://myshopping;
        }
        
6.nginx负载均衡

Logo

更多推荐