当前位置:首页 > 服务器 > 正文

多服务器共享域名(一个域名解析多台服务器)

今天给各位分享多服务器共享域名的知识,其中也会对一个域名解析多台服务器进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

如何配置dns 实现多台web服务器使用同一个域名

1、 安装DNS服务开始—〉设置—〉控制面板—〉添加/删除程序—〉添加/删除Windows组件—〉“网络服务”—〉选择“域名服务系统(DNS)”—〉按确定进行安装2、创建DNS正相解析区域开始—〉程序—〉管理工具—〉选择DNS,打开DNS控制台—〉右击“正相搜索区域”—〉选择“新建区域”—〉选择“标准主要区域”(或“Active Directory 集成区域”或“标准辅助区域”)--〉输入域名“abc.com” —〉输入要保存的区域的文件名“abc.com.dns”— 〉按完成,完成创建创建主机记录等:右击“abc.com”—〉“新建主机” —〉在名称处输入“www”,在“IP地址”处输入“192.168.0.3”,—〉按“添加主机”完成3、创建DNS反向解析区域开始—〉程序—〉管理工具—〉选择DNS,打开DNS控制台—〉右击“反向搜索区域”—〉选择“新建区域”—〉选择“标准主要区域”—〉输入用来标示区域的“网络ID”—〉输入要保存的区域的文件名“0.168.192.in-addr.arpa.dns”—〉按完成,完成创建创建指针PTR:右击“192.168.1.x.subnet”—〉选择“新建指针”—〉在“主机IP号”中输入2—〉在“主机名”中输入ftp—按 “确定”完成添加4、启用DNS循环复用功能 如对应于多个IP地址时DNS每次解析的顺序都不同右击选择“DNS服务器”—〉属性—〉高级—〉选择“启用循环”(round robin)--〉选择“启用netmask 排序”—〉按“ 确定”返回注:如所有的IP和域名服务器在同一子网时需要取消“启用netmask排序”,才能实现循环复用功能。即启用循环时,当主机的IP和dns在同一个子网时将始终排在最前面,当都在一个子网时就不进行循环,只有去除了“启用netmask排序” 时才能实现循环复用。DNS服务器会优先把与自己的网络ID相同的记录返回给客户端5、创建标准辅助区域,实现DNS区域复制在另一台DNS服务器上,右击“正向搜索区域”—〉选择“新建区域”—〉选择“标准辅助区域”—〉输入“abc.com”—〉输入主域名服务器的IP地址—〉选择“完成”可手工要求同步:在辅域名服务器上右击“abc.com”的域—〉选择“从主服务器传输”并且可以设置允许传输的域名服务器:在主域名服务器上右击“abc.com”的域—〉选择“属性”—〉选择“区域复制”—〉在“允许复制”前打勾,并选择允许复制的主机(到所有服务器、只有在“名称服务器”选项卡中列出的服务器、只允许到下列服务器)完成服务器类型的转换:右击区域—〉选择 “属性”—〉选择“类型”的“更改”按钮—〉选择要更改的区域类型—〉按“确定”6、实现DNS唯高速缓存服务器创建一个没有任何区域的DNS服务器—〉右击DNS服务器—〉选择“属性”—〉选择“转发器”中的“启用转发器”—〉输入转发器的IP地址—〉按“确定”完成清除“唯高速缓存”中的cache内容:右击“DNS服务器”—〉选择“清除缓存”或者选择“DNS服务器”—〉在菜单中选择“查看”,高级—〉右击“缓存的查找”—〉选择“清除缓存”(客户端清空DNS缓存—)ipconfig /flushdns)7、 DNS的委派(子域的转向) 在原域名服务器上建立“subdomain.abc.com”的主机—〉右击abc.com的域,选择“新建委派”—〉将subdomain.abc.com的域代理给subdomain.abc.com的主机—〉在subdomain.abc.com上建立“正向标准区域”subdomain.abc.com—〉添加相关主机记录8、 设置 DNS区域的动态更新 右击选择DNS上区域—〉选择“属性”—〉选择“常规”中的“允许动态更新”,选是— 〉然后按 “确定”—〉在本机的DHCP服务器中—〉右击选择DHCP服务器—〉选择“属性”—〉选择“DNS”—〉选择“为不支持动态更新的DNS客户启用更新”—〉在客户端使用ipconfig /registerdns来更新域名的注册信息注意客户端需要将完整的计算机名改成myhost.abc.com9、配置DNS客户端 在客户端计算机上打开tcp/ip属性对话框,在dns服务器地址栏输入dns服务器的ip地址 1、 安装DNS服务开始—〉设置—〉控制面板—〉添加/删除程序—〉添加/删除Windows组件—〉“网络服务”—〉选择“域名服务系统(DNS)”—〉按确定进行安装2、创建DNS正相解析区域开始—〉程序—〉管理工具—〉选择DNS,打开DNS控制台—〉右击“正相搜索区域”—〉选择“新建区域”—〉选择“标准主要区域”(或“Active Directory 集成区域”或“标准辅助区域”)--〉输入域名“abc.com” —〉输入要保存的区域的文件名“abc.com.dns”— 〉按完成,完成创建创建主机记录等:右击“abc.com”—〉“新建主机” —〉在名称处输入“www”,在“IP地址”处输入“192.168.0.3”,—〉按“添加主机”完成3、创建DNS反向解析区域开始—〉程序—〉管理工具—〉选择DNS,打开DNS控制台—〉右击“反向搜索区域”—〉选择“新建区域”—〉选择“标准主要区域”—〉输入用来标示区域的“网络ID”—〉输入要保存的区域的文件名“0.168.192.in-addr.arpa.dns”—〉按完成,完成创建创建指针PTR:右击“192.168.1.x.subnet”—〉选择“新建指针”—〉在“主机IP号”中输入2—〉在“主机名”中输入ftp—按 “确定”完成添加4、启用DNS循环复用功能 如对应于多个IP地址时DNS每次解析的顺序都不同右击选择“DNS服务器”—〉属性—〉高级—〉选择“启用循环”(round robin)--〉选择“启用netmask 排序”—〉按“ 确定”返回注:如所有的IP和域名服务器在同一子网时需要取消“启用netmask排序”,才能实现循环复用功能。即启用循环时,当主机的IP和dns在同一个子网时将始终排在最前面,当都在一个子网时就不进行循环,只有去除了“启用netmask排序” 时才能实现循环复用。DNS服务器会优先把与自己的网络ID相同的记录返回给客户端5、创建标准辅助区域,实现DNS区域复制在另一台DNS服务器上,右击“正向搜索区域”—〉选择“新建区域”—〉选择“标准辅助区域”—〉输入“abc.com”—〉输入主域名服务器的IP地址—〉选择“完成”可手工要求同步:在辅域名服务器上右击“abc.com”的域—〉选择“从主服务器传输”并且可以设置允许传输的域名服务器:在主域名服务器上右击“abc.com”的域—〉选择“属性”—〉选择“区域复制”—〉在“允许复制”前打勾,并选择允许复制的主机(到所有服务器、只有在“名称服务器”选项卡中列出的服务器、只允许到下列服务器)完成服务器类型的转换:右击区域—〉选择 “属性”—〉选择“类型”的“更改”按钮—〉选择要更改的区域类型—〉按“确定”6、实现DNS唯高速缓存服务器创建一个没有任何区域的DNS服务器—〉右击DNS服务器—〉选择“属性”—〉选择“转发器”中的“启用转发器”—〉输入转发器的IP地址—〉按“确定”完成清除“唯高速缓存”中的cache内容:右击“DNS服务器”—〉选择“清除缓存”或者选择“DNS服务器”—〉在菜单中选择“查看”,高级—〉右击“缓存的查找”—〉选择“清除缓存”(客户端清空DNS缓存—)ipconfig /flushdns)7、 DNS的委派(子域的转向) 在原域名服务器上建立“subdomain.abc.com”的主机—〉右击abc.com的域,选择“新建委派”—〉将subdomain.abc.com的域代理给subdomain.abc.com的主机—〉在subdomain.abc.com上建立“正向标准区域”subdomain.abc.com—〉添加相关主机记录8、 设置 DNS区域的动态更新 右击选择DNS上区域—〉选择“属性”—〉选择“常规”中的“允许动态更新”,选是— 〉然后按 “确定”—〉在本机的DHCP服务器中—〉右击选择DHCP服务器—〉选择“属性”—〉选择“DNS”—〉选择“为不支持动态更新的DNS客户启用更新”—〉在客户端使用ipconfig /registerdns来更新域名的注册信息注意客户端需要将完整的计算机名改成myhost.abc.com9、配置DNS客户端 在客户端计算机上打开tcp/ip属性对话框,在dns服务器地址栏输入dns服务器的ip地址

两个服务器,使用一个域名会怎样?

可以的。

比如主域名解析到

Aip,www的域名解析到

Bip,这样就可以访问两个不同的服务器,如果你想主域名同事解析到Aip和Bip,无法实现,有冲突。

这些服务器如果提供相同的服务,可以做成群集,对外使用唯一的IP,内部实现负载均衡。这些服务器如果提供不同的服务,可以共用一个IP,通过不同的端口来映射位于不同服务器的不同服务。好处是节省IP地址,在很大程度上减少内部网络结构的暴露,更加安全。缺点是需要额外的配置甚至是设备;

一个IP可以对应对多个域名,一个域名只能对应一个IP。比如IP为100.100.100.100的服务器上有一个Web服务器,它关联了2个域名,A.com和B.com.访问这两个域名都能访问到该服务器,但是无论是哪个域名,都只能访问一个服务器,也就是一个IP。

如何处理多服务器共享session

在默认情况下,各个服务器会各自分别对同一个客户端产生SESSION ID,如对于同一个用户浏览器,A 服务器产生的 SESSION ID 是

30de1e9de3192ba6ce2992d27a1b6a0a,而 B

服务器生成的则是c72665af28a8b14c0fe11afe3b59b51b。另外,PHP 的 SESSION

数据都是分别保存在本服务器的文件系统中。

确定了问题所在之后,就可以着手进行解决了。想要共享 SESSION 数据,那就必须实现两个目标:

一个是各个服务器对同一个客户端产生的 SESSION ID 必须相同,并且可通过同一个 COOKIE 进行传递,也就是说各个服务器必须可以读取同一个名为 PHPSESSID 的 COOKIE;

另一个是 SESSION 数据的存储方式/位置必须保证各个服务器都能够访问到。 简单地说就是多服务器共享客户端的 SESSION ID,同时还必须共享服务器端的 SESSION

数据。

第一个目标的实现其实很简单,只需要对 COOKIE 的域(domain)进行特殊地设置即可,默认情况下,COOKIE 的域是当前服务器的域名/IP 地址,而域不同的话,各

个服务器所设置的 COOKIE 是不能相互访问的。

四、代码实现

首先创建数据表,MySQL 的 SQL 语句如下:

CREATE TABLE `sess` (

`sesskey` varchar(32) NOT NULL default '',

`expiry` bigint(20) NOT NULL default '0',

`data` longtext NOT NULL,

PRIMARY KEY (`sesskey`), KEY `expiry` (`expiry`)

) TYPE=MyISAM

sesskey 为 SESSION ID,expiry 为 SESSION 过期时间,data 用于保存 SESSION 数据。

默认情况下 SESSION 数据是以文件方式保存,想要使用数据库方式保存,就必须重新定义 SESSION 各个操作的处理函数。PHP 提供了 session_set_save_handle()

函数,可以用此函数自定义 SESSION 的处理过程,当然首先要先将 session.save_handler 改成 user,可在 PHP 中进行设置: session_module_name('user');

接下来着重讲一下 session_set_save_handle() 函数,

此函数有六个参数:

session_set_save_handler ( string open, string close, string read,

string write, string destroy, string gc ) 各个参数为各项操作的函数名,这些操作依次是:

打开、关闭、读取、写入、销毁、垃圾回收。PHP 手册中有详细的例子,

在这里我们使用 OO 的方式来实现这些操作,详细代码如下:

define('MY_SESS_TIME',3600); //SESSION 生存时长

//类定义

class My_Sess

{

/**

* 数据库连接对象,设置成了静态变量,因为不设置为静态变量,数据库连接对象在其他方法不能被调用,目前还不清楚什么原因

*

* @var obj

*/

static public $db;

/**

* 构造函数

*

* @param obj $dbname 数据库连接对象

*/

function __construct($dbname){

self::$db = $dbname;

}

/**

* 初始化session,使用数据库mysql来存储session的值,利用session_set_save_handler方法实现

*

*/

function init()

{

$domain = '';

//不使用 GET/POST 变量方式

ini_set('session.use_trans_sid',0);

//设置垃圾回收最大生存时间

ini_set('session.gc_maxlifetime',MY_SESS_TIME);

//使用 COOKIE 保存 SESSION ID 的方式

ini_set('session.use_cookies',1);

ini_set('session.cookie_path','/');

//多主机共享保存 SESSION ID 的 COOKIE,因为我是本地服务器测试所以设置$domain=''

ini_set('session.cookie_domain',$domain);

//将 session.save_handler 设置为 user,而不是默认的 files

session_module_name('user');

//定义 SESSION 各项操作所对应的方法名

session_set_save_handler(

array('My_Sess','open'),//对应于类My_Sess的open()方法,下同。

array('My_Sess','close'),

array('My_Sess','read'),

array('My_Sess','write'),

array('My_Sess','destroy'),

array('My_Sess','gc')

);

//session_start()必须位于session_set_save_handler方法之后

session_start();

}

function open($save_path, $session_name) {

//print_r($sesskey);

return true;

} //end function

function close(){

if(self::$db){

self::$db-close();

}

return true;

}

function read($sesskey) {

$sql = 'SELECT `data` FROM `sess` WHERE `sesskey`=' . (self::$db-qstr($sesskey)) . ' AND `expiry`=' . time();

$rs=self::$db-execute($sql);

if($rs){

if($rs-EOF){

return '';

} else {//读取到对应于 SESSION ID 的 SESSION 数据

$v = $rs-fields[0];

$rs-close();

return $v;

}

}

return '';

}

function write($sesskey,$data){

$qkey = $sesskey;

$expiry = time()+MY_SESS_TIME;

$arr = array(

'sesskey' = $qkey,

'expiry' = $expiry,

'data' = $data);

self::$db-replace('sess', $arr, 'sesskey', true);

return true;

}

function destroy($sesskey) {

$sql = 'DELETE FROM `sess` WHERE `sesskey`='.self::$db-qstr($sesskey);

$rs =self::$db-execute($sql);

return true;

}

function gc($maxlifetime = null) {

$sql = 'DELETE FROM `sess` WHERE `expiry`'.time();

self::$db-execute($sql);

//由于经常性的对表 sess 做删除操作,容易产生碎片,

//所以在垃圾回收中对该表进行优化操作。

$sql = 'OPTIMIZE TABLE `sess`';

self::$db-Execute($sql);

return true;

}

}

//使用 ADOdb 作为数据库抽象层。

require_once('adodb/adodb.inc.php');

//数据库配置项,可放入配置文件中(如:config.inc.php)。

$db_type = 'mysql';

$db_host = '127.0.0.1';

$db_user = 'root';

$db_pass = '111';

$db_name = 'sess_db';

//创建数据库连接。

$cnn=ADONewConnection($db_type);

$cnn-Connect($db_host,$db_user,$db_pass, $db_name);

//初始化 SESSION 设置,初始化时已经包含了session_start()!

$sess = new My_Sess($cnn);

$sess-init();

$_SESSION['a']='aaa';

$_SESSION['b']='bbb';

$_SESSION['c']='ccc';

print_r($_SESSION);

?

五、遗留问题 如果网站的访问量很大的话,SESSION 的读写会频繁地对数据库进行操作,这样效率就会明显降低。考虑到 SESSION 数据一般不会很大,可以尝试用

C/Java 写个多线程的程序,用 HASH 表保存 SESSION 数据,并通过 socket 通信进行数据读写,这样 SESSION 就保存在内存中,读写速度应该会快很多。另外还可

以通过负载均衡来分担服务器负载。

刚想建站,有很多问题? ip独立域名 共享域名这两个什么意思??

是问独立IP还是共享IP吧,域名没有什么独立域名,共享域名的说法。

独立IP是指,这个IP完全给你一个人用,你可以梆定N个域名。

共享IP是指,这个IP给多个人用,一般是指同一台服务器,或者VPS的用户而言,但是共享IP一般不利于网站优化,如果其中一个用户有问题,你的网站也会受到影响。

多服务器共享域名的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于一个域名解析多台服务器、多服务器共享域名的信息别忘了在本站进行查找喔。

取消
扫码支持 支付码