Xen5.5制作windows镜像


已在Xen下制作完Linux镜像,windows镜像也做了10来天了,现来个总结,镜像一览表:
windows2003 Server windows2003_64 Server
windows 自家的服务器 ...64自家服务器
windows 自家的loadBalancer ...64
windows 自家的portal Server ...64
windows mysql5.1 ...64
windows apache loacBalancer ...64

每个镜像都拥有的“六脉神剑":
JDK1.6.22, intel-agent, cloud-agent,
VNC server, Ssh Server, XenTools
在此基础上再安装特性东东,如Mysql镜像安装mysql+apache+php+phpMyAdmin,apache LoadBalancer镜像就安装apache LoadBalancer... ...

——————————————安装过程概览——————————————
1、 如何将Apusic作为windows服务启动
    Cmd中切换到%Apusic_Home%/domain/mydomain/bin目录
    .安装  apusicsvc.exe -install -name xxx
    .移除  apusicsvc.exe -uninstall xxx 后可带参数(查看帮助)

2、 如何将.bat作为windows服务(.bat文件怎么注册成windows服务)
   .使用sc命令
sc create 服务名 binPath= xxx type= share start= auto display= yyy...可选参数,具体的参数请google
    注意: = 后面的空格不能省略。如果路径中含有空格则使用双引号括起来...

   声明:本人使用此方法并未达到目标。
拓展:要创建服务,使用sc命令即可,但要能作为服务运行必须符合MS的相关规范。我使用命令成功的创建了服务但服务没有生效,觉得去研究MS相关规范成本太高因此放弃... ...
启动服务过程中所经历的错误:
A、 错误5拒绝访问
B、 错误1053: 服务没有及时相应启动或控制请求
想让.bat做成服务运行,sc不行,不止.bat不行,一般.exe都不行。还是上面的理由做成服务的编写是有固定格式的... ...
推荐使用软件magic starter。但是我本人采用的是java wrapper service

3、 参考我的《将java程序做成windows系统服务》
    http://liaoshaoyao.iteye.com/admin/blogs/809134

4、 扩展之.bat与.cmd的区别
   bat用的是16位的dos运行,而cmd则是通过xp系统的32位dos运行的。有些命令在bat可以使用但是在cmd中却不能使用。

5、 将Apusic as配置成Apusic LoadBalancer的两种方法:
   方法一:
   方法二:在/mydomain/bin下找到startapusic.cmd中,修改此启动脚本,在其中所有的%JAVA_RUN%后添加 -config /config/loadbalancer.conf文件

6、 windows2003 server每次开机时都需要点击ctrl+alt+del的方式才能登录,如何去掉这一限制呢?
  “运行”——gpedit.msc——组策略——计算机配置——windows设置——安全设置——本地策略——安全选项,将“交互式登录:不需要按ctrl+alt+del”勾上OK!

7、 关于远程服务
  windows的远程服务有我们大家都熟知的Telnet方式,但是那种方式不太安全,况且考虑到与Linux镜像保持一致在此处我们仍然使用VNC来进行远程访问。
  拓展:
  A、 Linux下访问windows远程桌面
  .启服务中的Terminal Services
  .开启我的电脑——远程中的选项(windows的远程桌面需要用到的端口为3389),如果要修改端口可以参照下面的方式:
  进入注册表: HKEY_LOCAL_MACHINE\System\currentControlSet\Control\Terminal Server\wds\rdpwd\tds\tcp\portNumber 进行编辑。

8、 负载均衡器
作用:
A、将客户端的请求均匀地分流给后端真实的服务器
B、 一台做主机另一台做热备份

9、 Apache在windows环境下的配置
首先得打开httpd.conf这个配置文件,找到如下代码:
LoadModule proxy_module modules/mod_proxy.so//提供代理服务器功能
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so//提供负载均衡功能
LoadModule proxy_http_module modules/mod_proxy_http.so//支持http协议
   默认的httpd.conf中只含#ProxyRequests On,添加如下配置:
   ProxyRequests Off
  <Proxy balancer://mycluster>
  BalancerMember http://node-a.myserver.com:8080(使用BlancerMember添加真实的服务器地址)
  BalancerMember http://node-b.myserver.com:8080
  </Proxy>
  ProxyPass / balancer://mycluster(协议地址可以随便定义)
   调试时可以添加如下代码来监视负载均衡器(不要带入到生产环境):
<Location /balancer-manager>
  SetHandler balancer-manager
  order Deny,Allow
  Deny from all
  Allow from localhost
  </Location>
如此般配置好之后访问 http://localhost/balancer-manager/ 即可看到负载均衡的工作状况。

   改完之后重启服务器,访问你的Apache所在服务器的地址,即可看到负载均衡的效果了。打开 balancer-manager 的界面,可以看到请求是平均分配的。
   如果不想平均分配怎么办?给 BalancerMember 加上 loadfactor 参数即可,取值范围为1-100。比如你有三台服务器,负载分配比例为 7:2:1,只需这样设置:
   ProxyRequests Off
  <Proxy balancer://mycluster>
  BalancerMember http://node-a.myserver.com:8080 loadfactor=7
  BalancerMember http://node-b.myserver.com:8080 loadfactor=2
  BalancerMember http://node-c.myserver.com:8080 loadfactor=1
  </Proxy>
  ProxyPass / balancer://mycluster
  默认情况下,负载均衡会尽量让各个服务器接受的请求次数满足预设的比例。如果要改变算法,可以使用 lbmethod 属性。如:
   ProxyRequests Off
  <Proxy balancer://mycluster>
  BalancerMember http://node-a.myserver.com:8080 loadfactor=7
  BalancerMember http://node-b.myserver.com:8080 loadfactor=2
  BalancerMember http://node-c.myserver.com:8080 loadfactor=1
  </Proxy>
  ProxyPass / balancer://mycluster
  ProxySet lbmethod=bytraffic

   lbmethod可能的取值有:
  lbmethod=byrequests 按照请求次数均衡(默认)
  lbmethod=bytraffic 按照流量均衡
  lbmethod=bybusyness 按照繁忙程度均衡(总是分配给活跃请求数最少的服务器)

——————关于热备份(Hot StandBy)————————
只需添加 status=+H 属性,就可以把某台服务器指定为备份服务器:
  ProxyRequests Off
  <Proxy balancer://mycluster>
  BalancerMember http://node-a.myserver.com:8080
  BalancerMember http://node-b.myserver.com:8080 status=+H
  </Proxy>
  ProxyPass / balancer://mycluster
从 balancer-manager 界面中可以看到,请求总是流向 node-a ,一旦node-a挂掉, Apache会检测到错误并把请求分流给 node-b。Apache会每隔几分钟检测一下 node-a 的状况,如果node-a恢复,就继续使用node-a。

10、 Apache2.0+性能调优
2.0中影响性能的最核心特性:MPM(Multi-Processing Modules,多道处理模块),在此主要阐述prefork和worker这两种和性能关系最大的产品级MPM:

A、 prefork的工作原理是,控制进程在最初建立“StartServers”个子进程后,为了满足MinSpareServers设置的需要创建一个进程,等待一秒钟,继续创建两个,再等待一秒钟,继续创建四个……如此按指数级增加创建的进程数,最多达到每秒32个,直到满足MinSpareServers设置的值为止。这就是预派生(prefork)的由来。这种模式可以不必在请求到来时再产生新的进程,从而减小了系统开销以增加性能

B、 worker的工作原理及配置
由主控制进程生成“StartServers”个子进程,每个子进程中包含固定的ThreadsPerChild线程数,各个线程独立地处理请求

调优工作主要针对httpd.conf中的如下两处的参数值进行调节:

<IfModule prefork.c>
StartServers       8
MinSpareServers    5
MaxSpareServers   20
ServerLimit      256
MaxClients       256
MaxRequestsPerChild  4000
</IfModule>


<IfModule worker.c>
StartServers         2
MaxClients         150
MinSpareThreads     25
MaxSpareThreads     75
ThreadsPerChild     25
MaxRequestsPerChild  0
</IfModule>

我们可以显示地指定使用那种MPM.

11、 windows启动之后总是弹出提示框"发现新硬件,已安装完更新,...需重启"的提示,然而本身并需要重启的。怀疑是XenServer启动的途中往其中插入了配置IP的xxx.iso,如何去掉这个提示呢?
   网上一般的说法是重新安装设备的驱动... ... (排除)

12、 windows修改主机名而不重启
   从网上搜到了相关的脚本,试验成功,然而当使用远程连接时却提示“不在域内...”,然而我使用VNC Client是可以连接成功的。 VNC与Telnet使用的是不同的连接方式,如何解决Telnet连接不成功的问题呢?

13、 windows查看进程号及kill进程的方法
   windows任务管理器——查看——选择列 选择
   命令行: tasklist 列出所有的进程和进程的相应信息
   杀进程的命令:
    taskill 进程号(程序名)
   强力杀进程:
   ntsd -c q -p PID
14、 小知识: Linux下不识别localhost,得换成对应的127.0.0.1,而windows对于两者都能正确识别。
待续... ...
反思:
1、 起初并没有弄明白intel-agent与cloud-agent及其伴随os启动的整个原理。傻B似的在那里修改每一个模板的ip与主机名,结果发现不能用。

—————————————突破障碍——————————————
   制作好了Windows虚拟镜像之后在应用平台启动,能够正常启动与关闭但是一旦关闭则不能再被启动了(也不能被重启)... ...
   这个问题整整折磨我跟师兄近达两个星期,一直到今天才水落石出,原来是我们将windows虚拟机的最大cpu个数设置为32个的缘故(linux也是32个)。查看文档发现如下东东:
Xen5.5制作windows镜像_第1张图片

Xen5.5制作windows镜像_第2张图片

   虽然说早就意识到了阅读文档的重要性,然而却一再视而不见!!!

你可能感兴趣的:(apache,windows,linux,应用服务器,mysql)