客户的web服务器是2003系统,为了保证业务的正常运行,一直有另一台相同的web服务器做冷备。然而冷备的缺点就是假如生产机宕掉或者服务停掉,就需要手工的将冷备的机器切换上线;这样便造成了业务正常运行的断点。
为保证业务的正常连续运行,需要做负载均衡同时也是双机热备,此次先在非生产环境做好实验。
一、环境描述:
VMware Workstation版本:10.0.0 build-1295980
操作系统:win2003企业版
每台虚机需要两块网卡,一块网卡用于绑定群集ip,实验中称为公网网卡;另一块用于节点间相互通讯,试验中称为内网网卡。
计算机a:公网地址:192.168.137.19
内网地址:100.0.0.1
计算机b:公网地址:192.168.137.29
内网地址:100.0.0.2
集群ip地址:192.168.137.39
两台虚机的管理员 Administrator密码需一致,不能为空,否则会在添加主机到群集时需添加用户名/密码,出现未知错误。
二、具体实施
1、先做好一台win2003的虚拟机,需要注意的是网卡设置成桥接模式,存放虚机的文件夹命名为cp1。
2、复制做好的虚机
3、打开虚机1,需再添加一块网卡,同样是桥接模式。
4、打开虚机2(即复制过的虚机),需先添加两块网卡,同样是桥接模式。然后再把原先的网卡删掉。
5、开机,提示如下选项时,选择复制
6、配置管理员密码并安装IIS,记得选择asp.net,否则容易出错误。
7、配置网卡地址,不要选择网络负载平衡
计算机a的地址
计算机b的地址
8、打开网络负载平衡管理器
9、选择新建
10、注意群集参数选择多播
11、默认下一步
12、将默认的这条规则去掉
13、输入本机的内网网卡地址,选择公网网卡作为群集的网卡。
14、优先表示符的意思是机器的优先替代顺序,1号机宕掉的话2号机会替代上来,以此类推。
15、点击"完成"后,等待配置结果。
OpenGL(试用篇)——第一个OpenGL程序(2) 阅读原文»
2画个三角形
绘制三角形时,要用到顶点缓存(VBO)的知识。个人感觉,这部分已经是GL比较中级的知识了。所以这里不做详细解释,也不拿VBO和顶点数组(VA)和显示列表作对比。我觉得,像GL这种实践性很强的技术,还是先动手把效果实现了再说。《OpenGL超级宝典》之所以提供GLTools,就是想先把复杂的原理屏蔽掉,让初学者能快速实现效果,随着程序写的越多,有些原理自然而然就理解了。否则,一开始就灌输那么多原理的东西,但连个最基本的三角形都画不出来,我想大多数人都会很快失去兴趣,尤其是像DirectX和OpenGL这种偏底层的技术。
所以,这里我只简单说一下VBO的作用。VBO全名Vertex Buffer Object――顶点缓存对象。它的作用就是存储顶点的一系列属性,比如顶点的位置,颜色,法线,纹理坐标等等。GL在绘制的过程中,就是根据VBO的数据把图形画出来。
2.1顶点,快到碗里来~
创建VBO
既然,VBO是存储顶点的属性,那首先得有碗吧。
所以,第一步就是创建VBO
voidglGenBuffers(GLsizein,GLuint*buffers);
n:要产生的VBO的数量
buffers:存储VBO的句柄。
PS:GLsizei=intGLuint= unsignedint
有人会问,干嘛这么麻烦,直接用int不就好了。OpenGL是跨平台的API,所以要兼顾各个平台,所以自己重新定义了类型。这个知道就行,建议养成用GL专有类型的好习惯。
绑定VBO
voidglBindBuffer(GLenum target,GLuint buffer);
绑定一个缓冲区对象。
target:可能取值是:GL_ARRAY_BUFFER, GL_ELEMENT_ARRAY_BUFFER, GL_PIXEL_PACK_BUFFER, or GL_PIXEL_UNPACK_BUFFER.
我们现在主要使用GL_ARRAY_BUFFER和 GL_ELEMENT_ARRAY_BUFFER。
GL_ARRAY_BUFFER用于保存之前说的,顶点的各种属性
GL_ELEMENT_ARRAY_BUFFER用于保存顶点索引,这个在以后用顶点索引模型绘制时会用到。
当进行绑定之后,以前的绑定就失效了。
在绑定的同时,也将该缓存设置成当前缓存。GL对缓存的一切操作,都是对当前缓存有效。
PS:这么做的原因,是因为OpenGL采用状态机的模式。glBindBuffer就是讲GL的缓存模式切换到当前缓存。可能,习惯面向对象的人不习惯这种模式。GL是一种C语言API,所以GL中并没有真正的对象改变。GL中的对象,实际上就是一个int类型的标识符,对于熟悉Windows编程的朋友来说,也就是所谓的句柄。所以,GL要对使用或者改变某对象,采用的就是绑定该对象句柄的方式。而不是,C++的真正类,可以直接调用对象的成员方法。
为VBO填充数据
选择好要操作的VBO之后,就要为VBO装数据,这里的数据,可以是顶点位置,顶点颜色等等
voidglBufferData(GLenum target,GLsizeiptr size,constGLvoid * data,GLenum usage);
target:和之前glBindBuffer中的target含义是一样的。
size:填充数据的字节数,注意是字节数,不是个数
data:具体的数据。通常用数组
usage:缓存区的用途。当不确定用途时,使用GL_DYNAMIC_DRAW是一个比较安全的值。
开始画了
准备工作都做好了,现在就可以开画了。
我们画的三角形要到了顶点的两个属性:位置和颜色。
所以用到了两个VBO,我们要创建两个VBO。
首先定义两个全局变量
在init()方法内,添加如下代码
glGenBuffers(2, vbo); posBuf = vbo[0]; colorBuf = vbo[1]; |
然后,就是绘制三角形的代码了。
首先在display内,在glClear()和glSwapBuffer()之间,添加如下代码。
订阅:
博文评论 (Atom)
|
没有评论:
发表评论