sharding-proxy使用docker部署

在这里插入图片描述

前言

实际运用中,一定是要容器化部署的,所以需要打成镜像,官方也给出了基础镜像,我们可以参考官方给出的,链接如下:

https://shardingsphere.apache.org/document/current/cn/user-manual/shardingsphere-proxy/,然而根据前一篇博客,我们需要定义自己的分片规则,需要将我们jar打到proxylib目录下面,我们不得不自己大镜像了。

搭建步骤

看下目录如下:

-rwxrwxrwx. 1 root root       79 Jul 23 18:04 build_image.sh
-rw-r--r--. 1 root root      972 Jul 23 18:00 config-sharding.yaml
drwxr-xr-x. 2 root root        6 Jul 23 14:51 docker_build
-rw-r--r--. 1 root root      352 Jul 23 18:20 Dockerfile
-rw-r--r--. 1 root root   846263 Jul 23 14:30 mysql-connector-java-5.1.24.jar
-rw-r--r--. 1 1000 1000     1768 Jul 16 14:43 server.yaml
-rw-r--r--. 1 root root 10737874 Jul 15 13:37 sharding-algorithm-1.0-SNAPSHOT.jar
drwxr-xr-x. 2 root root        6 Jul 23 14:51 sharding-proxy-build-service

配置config-sharding.yaml

schemaName: sharding_db  # 数据库名字

dataSources:
  order_db_1: #数据源别名,多个往下边追加
    url:  jdbc:mysql://192.168.56.121:33065/order_db_1?useUnicode=true
    username: root
    password: root
    connectionTimeoutMilliseconds: 30000
    idleTimeoutMilliseconds: 60000
    maxLifetimeMilliseconds: 1800000
    maxPoolSize: 50

shardingRule: #分库分表的规则
  tables: # 多个表就往下边追加
    t_order: # 逻辑表的名字
      actualDataNodes: order_db_1.t_order_$->{1..2}   #实际执行的节点
      databaseStrategy:
        standard:
          shardingColumn: order_id  #分表字段
          preciseAlgorithmClassName: com.ddmc.algorithm.OrderShardingAlgorithm  #分表规则
      keyGenerator:
        type: SNOWFLAKE #分布式主键类型
        column: order_id  # 分布式主键
  bindingTables:
    - t_order  #  哪些表需要分库分表
  defaultDatabaseStrategy:
    none:
  defaultTableStrategy:
    none:

配置server.yaml

authentication:
  users:
    root:
      password: root
    sharding:
      password: sharding
      authorizedSchemas: sharding_db
props:
  acceptor.size: 16

拷贝jar包

  • mysql-connector-java-5.1.24.jar需要自行下载

  • sharding-algorithm-1.0-SNAPSHOT.jar 是我们自定义分片规则打成的包

编写Dockerfile

FROM docker.io/apache/sharding-proxy
MAINTAINER batman
USER root
WORKDIR /usr/src
VOLUME /data /data
ADD sharding-algorithm-1.0-SNAPSHOT.jar /opt/sharding-proxy/lib/
ADD config-sharding.yaml /opt/sharding-proxy/conf/config-sharding.yaml
ADD mysql-connector-java-5.1.24.jar /opt/sharding-proxy/lib/
ADD server.yaml /opt/sharding-proxy/conf/server.yaml

编写build_image.sh

#!/bin/sh
tag=$1
name=`basename $(echo $PWD)`
docker build -t ${name}:${tag} .

打镜像

./build_image.sh 0.0.1

查看并且启动镜像

[root@localhost sharding-proxy-build]# docker images
REPOSITORY                                  TAG                   IMAGE ID            CREATED             SIZE
sharding-proxy-build                        0.0.1                 6b4a94649eda        7 minutes ago       697 MB
docker run -p3307:3307 -it 6b4a94649eda
[INFO ] 10:37:15.297 [main] c.a.icatch.provider.imp.AssemblerImp - USING: com.atomikos.icatch.tm_unique_name = 172.17.0.2.tm
[INFO ] 10:37:15.297 [main] c.a.icatch.provider.imp.AssemblerImp - USING: com.atomikos.icatch.forget_orphaned_log_entries_delay = 86400000
[INFO ] 10:37:15.297 [main] c.a.icatch.provider.imp.AssemblerImp - USING: com.atomikos.icatch.oltp_retry_interval = 10000
[INFO ] 10:37:15.297 [main] c.a.icatch.provider.imp.AssemblerImp - USING: java.naming.provider.url = rmi://localhost:1099
[INFO ] 10:37:15.298 [main] c.a.icatch.provider.imp.AssemblerImp - USING: com.atomikos.icatch.force_shutdown_on_vm_exit = false
[INFO ] 10:37:15.298 [main] c.a.icatch.provider.imp.AssemblerImp - USING: com.atomikos.icatch.default_jta_timeout = 300000
[INFO ] 10:37:15.298 [main] c.a.icatch.provider.imp.AssemblerImp - Using default (local) logging and recovery...
[INFO ] 10:37:15.400 [main] c.a.d.xa.XATransactionalResource - resource-1-order_db_1: refreshed XAResource
[INFO ] 10:37:16.193 [main] ShardingSphere-metadata - Loading 1 logic tables' meta data.
[INFO ] 10:37:16.306 [main] ShardingSphere-metadata - Loading 2 tables' meta data.
[INFO ] 10:37:16.551 [epollEventLoopGroup-2-1] i.n.handler.logging.LoggingHandler - [id: 0xc4f47ef0] REGISTERED
[INFO ] 10:37:16.552 [epollEventLoopGroup-2-1] i.n.handler.logging.LoggingHandler - [id: 0xc4f47ef0] BIND: 0.0.0.0/0.0.0.0:3307
[INFO ] 10:37:16.553 [epollEventLoopGroup-2-1] i.n.handler.logging.LoggingHandler - [id: 0xc4f47ef0, L:/0.0.0.0:3307] ACTIVE

看到启动日志ACTIVE已经启动,客户端连接即可。

猜你喜欢

转载自blog.csdn.net/qq_37362891/article/details/107546583