从零到壹搭建一个商城架构--k8s集群安装

Posted 温润如风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从零到壹搭建一个商城架构--k8s集群安装相关的知识,希望对你有一定的参考价值。

如果想了解其他内容,请点击这里查看目录

1、kubeadm

kubeadm是官方 推出的一个用于快速部署kubernetes集群的工具

这个工具能通过两条指令完成一个kubernetes集群的部署:

#创建一个Mster节点
kubeadm init
#将一个Node节点加入到当前集群中
kubeadm join <Master节点的IP和端口>
2、前置要求

一台或多台机器操作系统Centos7x-86_x64

硬件配置:2GB或更多RAM,2个CPU或更多CPU,硬盘30GB或更多

集群中所有机器之间网络互通

可以访问外网,需要拉取镜像

禁止swap分区

3、部署步骤

1、在所有节点上安装Docker和Kubeadm

2、部署Kubernetes Master

3、部署容器网络插件

4、部署Kubernetes Node,将节点加入Kubernetes及群众

5、部署Dashboard Web页面,可视化查看Kubernetes资

从零到壹搭建一个商城架构--MySQL集群

1)、集群原理

以上可以作为企业中常用的数据库解决方案

  • MySQL-MMM是Master-Master Replication Manager for MySQL(mysql主主复制管理器)的简称,是Google的开源项目(Perl脚本)。MMM基于MySQL Replication 做的扩展架构,主要用来监控mysql主主复制并做失败转移,其原理是将真实数据库节点的IP(RIP)映射为虚拟IP(VIP)集。mysql-mm的监管端会提供多个虚拟IP(VIP),包括一个可写VIP,多个可读VIP,通过监管的管理,这些IP会绑定在可用的mysql之上,当某一台mysql宕机时,监管会将VIP迁移至其他mysql。在整个监管过程中,需要在mysql中添加相关授权用户,以便让mysql可以支持监管机的维护。授权的用户包括一个mmm_monitor用户和一个mmm_agent用户,如果想使用mmm的备份工具则添加一个mmm_tools用户。

  • MHA(Master High Availability)目前在MySQL高可用方面是一个相对成熟的解决方案,由日本DeNA公司youshimaton(现就职于Facebook公司)开发,是一套优秀的作为MySQL高可用性环境下故障切换和主从提升的高可用软件。在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作(以2019的眼光来说太慢了),并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。
  • InnDB Cluster支持自动Failover、强一致性、读写分离、读库高可用、读请求负载均衡横向扩展的特性,是比较完备的一套方案。但是不熟起来复杂,想要解决router单点问题,需要新增组件,如果没有其他更好的方案可考虑该方案。InnDB Cliuster主要由MySQL Shell、MySQL Router和MySQL服务器集群组成,三者协同工作,共同为MySQL提供完成的高可用性解决方案。MySQL Shell对管理人员提供管理接口,可以很方便的对集群进行配置和管理MySQL Router,可以根据部署的集群状况自动的初始化,是客户端连接实例。如果有节点宕机,集群会自动更新配置,集群包含单点写入和多点写入两种模式。在单主模式下,如果主节点宕机,从节点自动替换上来,MySQL Router自动探测,并将客户端连接到新节点。
2)、Docker安装模拟MySQL主从复制集群
  • 下载mysql镜像

  • 创建Master实例并启动

    docker run -p 3307:3306 --name mysql-master \\
    -v /mydata/mysql/master/log:/var/log/mysql \\
    -v /mydata/mysql/master/data:/var/lib/mysql \\
    -v /mydata/mysql/master/conf:/etc/mysql \\
    -e MYSQL_ROOT_PASSWORD=root \\
    -d mysql:5.7
    

参数说明:

-p 3307:3306 将容器的3306端口映射到主机的3307端口

-v /mydata/mysql/master/conf:/etc/mysql 将配置文件夹挂载到主机

-v /mydata/mysql/master/log:/var/log/mysql 将日志文件挂载到主机

-v /mydata/mysql/master/data:/var/lib/mysql 将数据文件挂载到主机

-e MYSQL_ROOT_PASSWORD=root 初始化root密码

  • 进入到挂载的master目录,修改配置文件

    vi /mydata/mysql/master/conf/my.cnf
    

    如以下内容:

  [client]

  default-character-set=utf8

  

  [mysql]

  default-character-set=utf8

  

  [mysqld]

  init_connect=‘SET collaction_connection=utf8_unicode_ci’

  init_connect=‘SET NAMES utf8’

  character-set-server=utf8

  collation-server=utf8_unicode_ci

  skip-character-set-client-handshake

  skip-name-resolve

  #skip-name-resolve一定要加,不然连接mysql会特别慢

  #添加master主从复制部分配置

  server_id=1

  log-bin=mysql-bin

  read-only=0

  binlog-do-db=hslmall_ums

  binlog-do-db=hslmall_pms

  binlog-do-db=hslmall_oms

  binlog-do-db=hslmall_sms

  binlog-do-db=hslmall_wms

  binlog-do-db=hslmall_admin

  replicate-ignore-db=mysql

  replicate-ignore-db=sys

  replicate-ignore-db=information_schema

  replicate-ignore-db=performance_schema
  • 重启master

  • 创建Slave实例并启动

    docker run -p 3317:3306 --name mysql-slave-01 \\
    -v /mydata/mysal/slave/log:/var/log/mysql \\
    -v /mydata/mysql/slave/data:/var/lib/mysql \\
    -v /mydata/mysql/slave/conf:/etc/mysql \\
    -e MYSQL_ROOT_PASSWORD=root \\
    -d mysql:5.7
    
  • 进入挂载的slave配置文件,加入以下内容

    如以下内容:

 [client]

 default-character-set=utf8

 

 [mysql]

 default-character-set=utf8

 

 [mysqld]

 init_connect=‘SET collaction_connection=utf8_unicode_ci’

 init_connect=‘SET NAMES utf8’

 character-set-server=utf8

 collation-server=utf8_unicode_ci

 skip-character-set-client-handshake

 skip-name-resolve

 #skip-name-resolve一定要加,不然连接mysql会特别慢

 #添加master主从复制部分配置

 server_id=2

 log-bin=mysql-bin

 read-only=1

 binlog-do-db=hslmall_ums

 binlog-do-db=hslmall_pms

 binlog-do-db=hslmall_oms

 binlog-do-db=hslmall_sms

 binlog-do-db=hslmall_wms

 binlog-do-db=hslmall_admin

 replicate-ignore-db=mysql

 replicate-ignore-db=sys

 replicate-ignore-db=information_schema

 replicate-ignore-db=performance_schema
  • 为master授权用户来他的同步数据

    • 进入

      docker exec -it mysql-master /bin/bash
      
    • 进入mysql内部(mysql -uroot -p)

      mysql -uroot -p
      #授权root可以远程访问(主从无关,为了方便我们远程连接mysql)
      grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
      flush privileges;
      #添加用来同步的用户
      GRANT REPLICATION SLAVE ON *.* to 'backup'@'%' identified by '123456';
      
    • 查看master状态

      show master status\\G
      
  • 配置slave同步master数据

    #进入slave容器
    docker exec -it mysql-slave-01 /bin/bash
    #进入mysql内部(mysql -uroot -p)
    mysql -uroot -p
    #授权root可以远程访问
    grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
    flush privileges;
    #设置主库连接
    change master to master_host='192.168.56.10',master_user='backup',master_password='123456',master_log_file='mysql-bin.000001',master_log_pos=0,master_port=3307
    #启动从库同步
    start slave
    #查看从库状态
    show slave status\\G
    
  • 示意图

  • Sharding-Proxy

根据官网说明进行文件配置

以上是关于从零到壹搭建一个商城架构--k8s集群安装的主要内容,如果未能解决你的问题,请参考以下文章

从零到壹学习Hyperledger Fabric第七讲:Peer配置剖析

4❤️Jenkins从零到壹❤️ :用户权限管理(JAVA 小虚竹)

4❤️Jenkins从零到壹❤️ :用户权限管理(JAVA 小虚竹)

09《JAVA从零到壹》第九讲:异常处理(文末有课后作业)

3❤️Jenkins从零到壹❤️ :常用功能大全(JAVA 小虚竹)

3❤️Jenkins从零到壹❤️ :常用功能大全(JAVA 小虚竹)