方案1:在***客户端使用多个配置文件实现(由用户选择拨号)
基本说明:
生产环境中比较规范的做法是让所有的××× server尽可能共享一台server,ca证书或者连接到同一个认证系统(即便跨机房)。这样只需要一份客户端认证和文件和多份指定不同的*** server的配置文件及科研实现***的负载均衡
实施大概过程
首先要把一份服务端keys拷贝到所有*** server的服务器上,然后再客户端本地有多个不同的客户端拨号配置文件(仅仅配置文件连接中的服务器IP有差别),由使用的用户选择拨号,这种方法也同样适合统一认证系统,如(本地文件,数据库,RADIUS、LDAP)认证
1.搭建两个open***服务器,但是安装成功了,就结束。
2.在上面安装好的一台服务器上面用下面命令,进行下面产生ca证书,server.conf、密钥和
用户的证书、密钥等。
3.把步骤二、那一台服务器生成的ca证书,server.key、密钥和用户的证书、密钥已经server.conf配置文件等(也就是keys目录下的所有内容,和server.conf配置文件),打包。
放在另外一台服务器对应的目录下。(如:/etc/open***/目录)
4.把第二台***服务下面。被复制过来的server.conf配置文件的local监听ip,改为本服务器的IP.
5.分别启动着这两台服务器的***服务。如果成功,服务端就搭建成功
注意:这个使用中两台open***服务器的内网网段要一致。
客户端:
1.和***服务器一样,把ca.key、用户的key和证书,放在windows的***客户端上面。但是.o***文件用两个,至上把
这两个o***客户端配置文件的名称不一样。(如01.o***。02.o***),文件内容里面的内容,至上把IP给我每个服务器不同的IP
就是这么简单,之后就拨号测试了
客户端用一套认证文件。两份o***配置文件
环境:
open***1 server
eth0: 10.0.0.13
eth1: 192.168.2.2
open***1 server
eth0: 10.0.0.14
eth1:192.168.2.3
=============================
#***-13.o*** 配置文件
client
dev tun
proto tcp
remote 10.0.0.13 52115 #这里是服务端的IP和***服务的端口
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt #这里是当前用户的ca证书
cert gao.crt #这里是当前用户的ca证书
key gao.key #这里是当前用户的ca证书
comp-lzo
verb 3
========================================
#***-14.o*** 配置文件
client
dev tun
proto tcp
remote 10.0.0.14 52115 #这里是服务端的IP和***服务的端口
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt #这里是当前用户的ca证书
cert gao.crt #这里是当前用户的ca证书
key gao.key #这里是当前用户的ca证书
comp-lzo
verb 3
#####################
当内网网关不是指向open***服务器的时候,适当使用下面命令
open***1 server
iptables -t nat -I POSTROUTING -o eth1 -s 11.8.0.0/24 -j SNAT --to-source 192.168.2.3
open***2 server:
iptables -t nat -I POSTROUTING -o eth1 -s 11.8.0.0/24 -j SNAT --to-source 192.168.2.2
===================
上面中的11.8.0.0/24 是open***虚拟出来的网段
192.168.2.2 是open***内网网卡的ip
方案1的特点:
1、该负载均衡方案操作简单,不引人多余服务,因此不需要增加多余的单点故障,但用户连接的×××不能使用时,用户就可以人工选择拨号其他的×××服务器
2、如果使用者为公司内部员工,此种方案值得推荐
3、从广义上讲是用户端实现负载均衡的方案。
###############################################################################
#open***服务高可用方案2
方案2:通过在客户端配置文件实现负载均衡
方案说明:
本方案是通过一个open***客户端文件,例如:lvnian.o***,在这个配置文件里面配置多个×××服务端的地址,然后利用客户端参数功能,在拨号时由客户端随机自动选择服务端,当连接的×××服务器宕机是,不需要人工干预,客户端会自动判断并且自动连接到其他可以的服务器。
服务器操作和方案1服务器的操作一样。
但是是客户机只需要一份o***配置文件。配置文件里面配置多个***的IP,当某一台***服务器宕机之后,客户端自动连接另外一台***服务器
客户端配置文件多的参数如下:
客户端用一套认证文件。一份o***配置文件。配置文件内容比上面的方案1,多下面参数
###added
remote 10.0.0.13 52115
remote 10.0.0.14 52115 #有多少台服务器,就可以用多少个remote ip,如果服务端的端口不一样,也需要把端口ip服务端的端口
remote-random
resolv-retry 20
###################
#***-13-14.o*** 配置文件
client
dev tun
proto tcp
#start 负载均衡高可用方案2客户端配置文件增加内容
remote 10.0.0.13 52115 #这里是服务端的IP和***服务的端口
remote 10.0.0.14 52115
remote-random
resolv-retry 20
#end 负载均衡高可用方案2客户端配置文件增加内容
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt #这里是当前用户的ca证书
cert gao.crt #这里是当前用户的ca证书
key gao.key #这里是当前用户的ca证书
comp-lzo
verb 3
方案2结论:
1、该负载均衡方案操作简单,不引人多余的服务(后面的方案都会引人服务),因此不会增加多余的单点故障,当用户连接的×××不能使用适合,电脑可以重新自动拨号连接到其他可用的×××服务器上。
2、对比方案1,方案2的配置更加简单,仅需要一个o***配置文件多个remote参数,拨号时客户端会随机自动选择拨号,方案1则需要手动选择不同的配置文件拨号。
3、这种方案是最值得推荐的
不仅仅可以在windows中可以使用,企业的跨机房也可以用上面的方案。
当然也可以配合hearbeat或者keepalived使用
##############################################################################
方案三:通过域名加DNS轮询的方式实现负载均衡(DNS自动分配×××)
1.服务器的配置和方案1和方案2的一样
2.客户端也是用一个配置文件。配置文件和方案2的差不多,但是方案2中的是IP.方案三改为用域名去连接了。
把域名解析为多个A记录。A记录分别对应不同ip,也就是对应不同的***的服务器
客户端配置文件,把
###added
remote www.gaoguodeng.com 52115
remote-random
resolv-retry 20
###############
安装dns具体步骤
1.yum安装dns
yum install bind bind-chroot bind-libs caching-nameserver ypbind -y
2.配置dns配置文件
默认配置文件在/etc/named.conf
修改下面地方
[root@L××× ~]# cat /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 { any; }; ####这里修改为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 { any; }; ####这里修改为any
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
/* 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";
};
#######etiantian.org zone by oldboy
zone "etiantian.org"{
type master;
file "etiantian.org.db";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
[root@L××× ~]#
===============================
[root@L××× ~]# cat /var/named/etiantian.org.db
@ IN SOA etiantian.org root(
2008030201
1H
15M
1W
1D )
IN NS @
IN A 127.0.0.1
*** IN A 10.0.0.3
*** IN A 10.0.0.4
#*** IN A 10.0.0.5
[root@L××× ~]#
==============================
配置/etc/resolv.conf
[root@L××× ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search localdomain
nameserver 10.0.0.3 ##配置文DNS服务器的本地ip
[root@L××× ~]#
==========================
出现下面结果,证明配置DNS成功
[root@L××× ~]# host ***.etiantian.org
***.etiantian.org has address 10.0.0.3
***.etiantian.org has address 10.0.0.4
***.etiantian.org has address 10.0.0.5
[root@L××× ~]#
客户端的配置文件如下:
client
dev tun
proto tcp
remote ***.etiantian.org 52115 #这里是服务端的IP和***服务的端口
remote-random
resolv-retry 20
resolv-retry infinite
nobind
ns-cert-type server
persist-key
persist-tun
ca ca.crt #这里是当前用户的ca证书
cert lvnian.crt #这里是当前用户的ca证书
key lvnian.key #这里是当前用户的ca证书
comp-lzo
verb 3
###
注意客户端的dns要设置为10.0.0.3。也就是设置成你搭建DNS所在服务器IP。同时清掉dns。
在windows请dns缓存的命令是: ipconfig /flushdns
并且能在客户端ping同***.etiantian.org
注意:方案3,可能会存在dns缓存的问题,导致无法切换,可以在windows客户端的cmd下面清除dns缓存。才能实现
转载于:https://blog.51cto.com/lvnian/1708809