zoukankan      html  css  js  c++  java
  • ssdb主从及双主模型配置和简单管理

    ssdb主从及双主模型配置和简单管理

    levelDB是一个key->value 的数据存储库,其只能在本地保存数据,支持持久化,并且支持保存非常大的数据,单机redis在保存较大数据的时候数十G的时候会出现响应慢等问题,而单机levelDB数据在150G以内的时候依然可以保持比较好的性能,其随机写入key->value的数据每秒可达到40W条,每秒随机读在6W,写比读还要快,因此适用于写操作大于读操作的场景,并且不支持网络传输, 即只能本机访问数据,官网地址http://leveldb.org/,国内有360基于levelDB开发支持了网络接口的SSDB,SSDB是一个 C/C++ 语言开发的高性能 NoSQL 数据库, 支持 KV, list, map(hash), zset(sorted set) 等数据结构, 用来替代或者与 Redis 配合存储十亿级别列表的数据,SSDB支持100倍与redis的容量,因此宣称要替换redis,SSDB支持网络、支持redis客户端、支持python/java/go/PHP/C++语言、支持持久化、支持主从复制、主主复制和负载均衡等功能

    官方文档:http://ssdb.io/zh_cn/
    安装文档:http://ssdb.io/docs/zh_cn/install.html

    SSD可以用于保证数据不丢失的场景而不是单单的数据缓存场景,用了SSDB尽量要每天晚上备份文件目录,即使做了主从也要对目录使用其自带的ssdb-dump工具进行备份。


    环境: centos 7.X x86_64

    centos6.X系统环境可能python版本和作者使用的有兼容性问题需要注意

    一、ssdb服务的安装和配置
    1.安装依赖

    # yum install -y jemalloc-devel autoconf

    2.下载安装包并编译

    # cd /usr/local/src
    # wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip
    # unzip master.zip
    [root@node2 src]# cd ssdb-master/
    [root@node2 ssdb-master]# make

    # 默认安装在 /usr/local/ssdb 目录下

    [root@node2 ssdb-master]# make install

    3.修改启动脚本

    [root@node2 ssdb-master]# cp tools/ssdb.sh /etc/init.d/ssdb
    
    [root@node2 ssdb-master]# vim /etc/init.d/ssdb
    configs="/usr/local/ssdb/ssdb.conf"

    4.加入启动项

    [root@node2 src]# chkconfig --add ssdb
    [root@node2 src]# chkconfig ssdb on
    [root@node2 src]# chkconfig --list ssdb
    ssdb 0:off    1:off    2:on    3:on    4:on    5:on    6:off

    5.配置命令路径

    # vim /etc/profile
    
    PATH=$PATH:/usr/local/ssdb
    export PATH
    
    # source /etc/profile

    5.修改配置文件

    # vim /usr/local/ssdb/ssdb.conf
    server:
    ip: 192.168.3.200
    port: 8888

     

    6.启动服务

    [root@node2 ssdb-master]# /etc/init.d/ssdb start
    Reloading systemd: [ OK ]
    Starting ssdb (via systemctl): [ OK ]
    
    [root@node2 ssdb-master]# ss -tnlp|grep 8888
    LISTEN 0 128 192.168.3.200:8888 *:* users:(("ssdb-server",pid=47357,fd=13))

    连接服务测试

    [root@node2 ssdb-master]# ssdb-cli -h 192.168.3.200 -p 8888
    ssdb (cli) - ssdb command line tool.
    Copyright (c) 2012-2016 ssdb.io
    
    'h' or 'help' for help, 'q' to quit.
    
    ssdb-server 1.9.4
    
    ssdb 192.168.3.200:8888> set name jack
    ok
    (0.001 sec)
    ssdb 192.168.3.200:8888> set age 18
    ok
    (0.001 sec)
    ssdb 192.168.3.200:8888> get name
    jack

    二、配置主从同步

    从服务器配置:

    配置主服务器的ID、type、host、port即可

    replication:
            binlog: yes
            sync_speed: -1
            slaveof:
                    id: node1
                    type: sync
                    host: 192.168.3.200
                    port: 8888

    测试在主节点上添加一个key在从节点上就可以马上看到

    从服务器info信息

    ssdb 192.168.3.198:8888> info
    version
        1.9.4
    links
        1
    total_calls
        9
    dbsize
        0
    binlogs
            capacity : 20000000
            min_seq  : 0
            max_seq  : 4
    replication
        slaveof 192.168.3.200:8888
            id         : node1
            type       : sync
            status     : SYNC
            last_seq   : 3
            copy_count : 3
            sync_count : 0
    serv_key_range
            kv  : "" - ""
            hash: "" - ""
            zset: "" - ""
            list: "" - ""
    data_key_range
            kv  : "address" - "salary"
            hash: "" - ""
            zset: "" - ""
            list: "" - ""
    leveldb.stats
                                       Compactions
        Level  Files Size(MB) Time(sec) Read(MB) Write(MB)

    主服务器info信息

    ssdb 192.168.3.200:8888> info
    version
    1.9.4
    links
    1
    total_calls
    12
    dbsize
    0
    binlogs
    capacity : 20000000
    min_seq : 0
    max_seq : 3
    replication
    client 192.168.3.198:57714
    type : sync
    status : SYNC
    last_seq : 3
    serv_key_range
    kv : "" - ""
    hash: "" - ""
    zset: "" - ""
    list: "" - ""
    data_key_range
    kv : "address" - "name"
    hash: "" - ""
    zset: "" - ""
    list: "" - ""
    leveldb.stats
    Compactions
    Level Files Size(MB) Time(sec) Read(MB) Write(MB)

    二、配置双主同步(主要是高可用)


    SSDB 数据库是支持双主(双 Master)和多主架构的. 而且, 我们的应用也是部署双主架构, 但当作单主来用. 也就是说, 平时只往其中一个写, 当出现故障时, 整体切换到另一个主上面. 如果应用层已经解决了数据拆分, 也即不会两个节点同时操作一个 key, 那么就可以放心使用双主同时写入.

    SSDB 双主的配置非常简单:
    只需要将 type 设置为 mirror, 然后每个节点各指向对方即可.
    如果是多主, 则每个节点要指向其它 n-1 个节点.

    node1中的配置信息:

    server:
            ip: 192.168.3.200
            port: 8888
    
    replication:
            binlog: yes
            sync_speed: -1
            slaveof:
                    id: node2
                    type: mirror
                    host: 192.168.3.198
                    port: 8888

    node2中的配置信息:

    server:
            ip: 192.168.3.198
            port: 8888
    
    replication:
            binlog: yes
            sync_speed: -1
            slaveof:
                    id: node1
                    type: mirror
                    host: 192.168.3.200
                    port: 8888

     

    node1中的info信息:

    ssdb 192.168.3.200:8888> info
    version
        1.9.4
    links
        1
    total_calls
        1
    dbsize
        273
    binlogs
            capacity : 20000000
            min_seq  : 1
            max_seq  : 71
    replication
        client 192.168.3.198:57724
            type     : mirror
            status   : SYNC
            last_seq : 71
    replication
        slaveof 192.168.3.198:8888
            id         : node2
            type       : mirror
            status     : SYNC
            last_seq   : 68
            copy_count : 4
            sync_count : 64
    serv_key_range
            kv  : "" - ""
            hash: "" - ""
            zset: "" - ""
            list: "" - ""
    data_key_range
            kv  : "address" - "salary"
            hash: "" - ""
            zset: "" - ""
            list: "" - ""
    leveldb.stats
                                       Compactions
        Level  Files Size(MB) Time(sec) Read(MB) Write(MB)
        --------------------------------------------------
          0        1        0         0        0         0

    node2中的info信息:

    ssdb 192.168.3.198:8888> info
    version
        1.9.4
    links
        1
    total_calls
        6
    dbsize
        1690
    binlogs
            capacity : 20000000
            min_seq  : 1
            max_seq  : 69
    replication
        client 192.168.3.200:46991
            type     : mirror
            status   : SYNC
            last_seq : 69
    replication
        slaveof 192.168.3.200:8888
            id         : node1
            type       : mirror
            status     : SYNC
            last_seq   : 72
            copy_count : 0
            sync_count : 0
    serv_key_range
            kv  : "" - ""
            hash: "" - ""
            zset: "" - ""
            list: "" - ""
    data_key_range
            kv  : "address" - "salary"
            hash: "" - ""
            zset: "" - ""
            list: "" - ""
    leveldb.stats
                                       Compactions
        Level  Files Size(MB) Time(sec) Read(MB) Write(MB)
        --------------------------------------------------
          0        1        0         0        0         0

    此时在任意节点写入数据都会在另外的节点查询到

    四、监控工具的使用

    将php文件上传到/var/www/html/phpssdbadmin目录

    lnmp架构的方法

    # yum -y install php php-mysql nginx php-gd* php-mcrypt
    
    修改/etc/nginx/nginx.conf
    
    location /phpssdbadmin {
    try_files $uri $uri/ /phpssdbadmin/index.php?$args;
    }
    index index.php;
    root /var/www/html;
    location ~ .php$ {
    include fastcgi_params;
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
    
    lamp架构的方法

    lamp架构的方法

    yum install -y httpd php php-gd*

    编辑/etc/httpd/conf/httpd.conf

    打开rewrite模块

    LoadModule rewrite_module modules/mod_rewrite.so
    
    DocumentRoot "/var/www/html"
    <Directory />
    Options FollowSymLinks
    AllowOverride All # 修改为All
    </Directory>
    
    <Directory "/var/www/html"> 
    Order allow,deny
    Allow from all
    AllowOverride All # 改为all
    </Directory>

    在根目录下简历.htaccess文件内容如下:

    # cat phpssdbadmin/.htaccess 
    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /var/www/html/phpssdbadmin
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /phpssdbadmin/index.php [L]
    </IfModule>

    OK,然后重启服务器,service httpd restart ,这样.htaccess就可以使用了

  • 相关阅读:
    O052、Create Volume 操作 (Part III)
    O051、Create Volume 操作 (Part II)
    O050、Create Volume 操作 (Part I)
    O049、准备 LVM Volume Provider
    O048、掌握 cinder-scheduler 调度逻辑
    O047、 Cinder 组件详解
    O046、掌握Cinder 的设计思想
    O045、理解 Cinder 架构
    O044、一张图秒懂 Nova 16种操作
    O043、计算节点宕机了怎么办
  • 原文地址:https://www.cnblogs.com/reblue520/p/6874558.html
Copyright © 2011-2022 走看看