首页 > 数据库 > > Redis高可用知多少之DNS篇
# 安装bind相关工具yum install bind bind-utils bind-devel bind-libs bind-chroot -y2.2 修改配置文件
vim /etc/named.conf## 编译对应内容// named.conf//// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS// server as a caching only nameserver (as a localhost DNS resolver only).//// See /usr/share/doc/bind*/sample/ for example named configuration files.//options {// listen-on port 53 { 127.0.0.1; }; // 此行注释listen-on port 53 { any; }; // 添加此行listen-on-v6 port 53 { ::1; };directory "/var/named";dump-file "/var/named/data/cache_dump.db";statistics-file "/var/named/data/named_stats.txt";memstatistics-file "/var/named/data/named_mem_stats.txt";// allow-query { localhost; }; // 注释此行allow-query { any; }; // 添加此行forwarders {114.114.114.114; }; // 添加此行,这是在DNS服务器不知道域名解析的时候询问这个IP的主机,这个IP的主机必须联网recursion yes;dnssec-enable yes;dnssec-validation yes;/* Path to ISC DLV key */bindkeys-file "/etc/named.iscdlv.key";managed-keys-directory "/var/named/dynamic";};logging {channel default_debug {file "data/named.run";severity dynamic;};};zone "." IN {type hint;file "named.ca";};include "/etc/named.rfc1912.zones";include "/etc/named.root.key";
named-checkconf
/etc/init.d/named start
vim /etc/named.rfc1912.zones## 此文件末尾追加如下内容zone "redis.com" IN { // redis.com 名自定义,即需要解析的域名type master; // dns域类型为masterfile "redis.com.zone"; // redis.com.zone 文件名自定义,后续文件名需与此一致allow-update { none; };};
# 拷贝文件cp -p named.localhost redis.com.zone # 拷贝文件,注意要连同权限一起拷贝,因权限不一致,启动会报错vim redis.com.zone$TTL 1D@ IN SOA rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNSdns IN A 192.168.56.208www IN A 192.168.56.208
vim /etc/named.rfc1912.zones # 此文件名在上面步骤的/etc/named.conf文件末尾有指定## 此文件末尾追加如下内容zone "56.168.192.in-addr.arpa" IN {type master;file "redis.com.local";allow-update { none; };};
# 拷贝文件cp -p named.localhost redis.com.local # 拷贝文件,注意要连同权限一起拷贝,因权限不一致,启动会报错vim redis.com.local1DIN SOA rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS @A 192.168.56.208AAAA ::1208 IN PTR
/etc/init.d/named restart
# 修改域名解析文件vim /etc/resolv.conf# 将创建的DNS服务器地址添加至此文件nameserver 192.168.56.209

nslookup# 结果如下Server: 192.168.56.209Address: 192.168.56.209#53Name:Address: 192.168.56.208

nslookup 192.168.56.208# 结果如下:Server: 192.168.56.209Address: 192.168.56.209#53208.56.168.192.in-addr.arpa name =

ping# 结果如下PING (192.168.56.208) 56(84) bytes of data.64 bytes from (192.168.56.208): icmp_seq=1 ttl=64 time=0.229 ms64 bytes from (192.168.56.208): icmp_seq=2 ttl=64 time=0.287 ms64 bytes from (192.168.56.208): icmp_seq=3 ttl=64 time=0.276 ms64 bytes from (192.168.56.208): icmp_seq=4 ttl=64 time=0.224 ms

yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tclb) 安装包准备
wget http://download.redis.io/releases/redis-4.0.14.tar.gztar -zxvf redis-4.0.14.tar.gz
cd redis-4.0.14makemake install
# 创建目录mkdir -p /data/redis/redis6379# 拷贝配置文件cp redis.conf /data/redis/redis6379/# 修改配置文件vim redis.conf修改如下部分bind 0.0.0.0 可以指定所有地址均可访问,若指定对应网段或IP 修改此处即可daemonize yes 放在后台执行,建议修改为yespidfile /data/redis/redis6379/redis_6379.pid 指定pid文件目录及文件名logfile "/data/redis/redis6379/redis6379.log" 指定log文件目录及文件名# 其他参数在生产环境中可适当调整# 启动redisredis.conf
127.0.0.1:6379> slaveof 192.168.56.208 6379 ## 即输入对应的redis主库的ip 即端口
127.0.0.1:6379> info Replication## 结果如下# Replicationrole:slavemaster_host:192.168.56.208master_port:6379master_link_status:up // up代表已正常同步master_last_io_seconds_ago:3master_sync_in_progress:0slave_repl_offset:266slave_priority:100slave_read_only:1connected_slaves:0master_replid:22830eb406e63f0a85d3d912a44e1b80dba6c860master_replid2:0000000000000000000000000000000000000000master_repl_offset:266second_repl_offset:-1repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:1repl_backlog_histlen:266
pip install redis
vim test_redis.py# 内容如下#!/usr/bin/python# coding=utf-8import redisv_ip =''v_port = 6379v_passwd=''r = redis.Redis(host=v_ip,port=v_port,password=v_passwd,db=0)r.set('test_key1','test1')result = r.get('test_key1')print result ,"设置键成功并获取到values"r.delete('test_key1')print "删除键完毕"result1 = r.get('test_key1')print result1,"验证删除成功"
python test_redis.py# 结果如下test1 设置键成功并获取到values删除键完毕None 验证删除成功

127.0.0.1:6379> shutdownnot connected> exit
python test_redis.py## 报错Traceback (most recent call last):File "test_redis.py", line 9, in <module>r.set('test_key1','test1')File "/usr/local/python2.7/lib/python2.7/site-packages/redis/client.py", line 1451, in setreturn self.execute_command('SET', *pieces)File "/usr/local/python2.7/lib/python2.7/site-packages/redis/client.py", line 772, in execute_commandconnection = pool.get_connection(command_name, **options)File "/usr/local/python2.7/lib/python2.7/site-packages/redis/connection.py", line 994, in get_connectionconnection.connect()File "/usr/local/python2.7/lib/python2.7/site-packages/redis/connection.py", line 497, in connectraise ConnectionError(self._error_message(e))redis.exceptions.ConnectionError: Error 111 connecting to :6379. Connection refused.
127.0.0.1:6379> info Replication# Replicationrole:slavemaster_host:192.168.56.208master_port:6379master_link_status:down // 主从同步已断开master_last_io_seconds_ago:-1master_sync_in_progress:0slave_repl_offset:3215master_link_down_since_seconds:98slave_priority:100slave_read_only:1connected_slaves:0master_replid:22830eb406e63f0a85d3d912a44e1b80dba6c860master_replid2:0000000000000000000000000000000000000000master_repl_offset:3215second_repl_offset:-1repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:1repl_backlog_histlen:3215
127.0.0.1:6379> slaveof no oneOK127.0.0.1:6379> info Replication# Replicationrole:master // 断开后,已变成主库connected_slaves:0master_replid:180df5fbdc8cf8999b27ad42e6c57eb3be31b6b2master_replid2:22830eb406e63f0a85d3d912a44e1b80dba6c860master_repl_offset:3215second_repl_offset:3216repl_backlog_active:1repl_backlog_size:1048576repl_backlog_first_byte_offset:1repl_backlog_histlen:3215
vim redis.com.zone## 修改1DIN SOA rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNSdns IN A 192.168.56.207www IN A 192.168.56.207vim redis.com.local# 修改后1DIN SOA rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS @A 192.168.56.207AAAA ::1207 IN PTR
/etc/init.d/named restart
nslookup #正向测试DNS# 结果如下nslookupServer: 192.168.56.209Address: 192.168.56.209#53Name:Address: 192.168.56.207
python test_redis.py# 运行结果test1 设置键成功并获取到values删除键完毕None 验证删除成功

精彩推荐:
原文作者:;如有侵权,请联系管理员删除。