分类目录归档:Uncategorized

apache2.2.X负载均衡

在 某些场景中,我们需要在前端放置一个Apache作为负载均衡器,后台有若干台Apusic或者其它的类似于Tomcat/WebLogic等应用服务 器,客户端发送到Apache的请求,将被分配到后台的这些真正完成请求的服务器上。本文描述如何使用Apache作为负载均衡器的方法和不同的负载均衡 的配置。

       在某些场景中,我们需要在前端放置一个Apache作为负载均衡器,后台有若干台Apusic或者其它的类似于Tomcat/WebLogic等应用服务 器,客户端发送到Apache的请求,将被分配到后台的这些真正完成请求的服务器上。本文描述如何使用Apache作为负载均衡器的方法。

       我们假设Apahce安装在 myserver 这台服务器上,并且希望用户访问http://myserver/ 时,能够将这些请求被负载到后台的两台服务器上,分别是:http://192.168.6.37:8080/ 和 http://192.168.6.37:6888/
一、安装并重新编译Apache

1、linux下Apache的安装

下载最新的Apache安装包httpd-2.2.3.tar.gz文件

1) 解压

         gzip –d httpd-2.2.3.tar.gz
         tar xvf httpd-2.2.3.tar

2) 解压以后,cd httpd-2.2.3 进入解压后的目录,在终端执输入以下命令:
./configure --prefix=/usr/local/httpd --enable-so --enable-proxy --enable-proxy-ajp --enable-proxy-http --enable-proxy-ftp --enable-proxy-connect --enable-proxy-balancer
      默认情况下,Apache安装是不会将这些文件编译进内核,因此,需要人工加载,而通过上述操作,在编译时会将这些DSO文件编译到内核中。

3) 在终端输入:make

4) 在终端输入:make install

5) 进入Apache的bin目录,在终端输入apachectl –k start

6) 在浏览器中输入http://myserver,默认是80端口,如果出现It works!,说明Apache已经正常启动。

2、window下Apache的安装

1) 下载apache_2.2.2-win32-x86-no_ssl.msi版本或其他版本的apache
2) 点击该文件,就可以直接安装
3) 要配置负载均衡,进入apache的安装目录下的conf目录,打开httpd.conf文件,将文件中mod_proxy.so、 mod_proxy_ajp.so、mod_proxy_balancer.so、 mod_proxy_connect.so、  mod_proxy_http.so 、mod_proxy_ftp.so所在行的注释去掉,就可以进行负载均衡的配置。

4) 在浏览器中输入http://myserver,默认是80端口,如果出现It works!,说明Apache已经正常启动。

二、配置Apache作为LoadBalance

将Apache作为LoadBalance前置机分别有三种不同的部署方式,分别是: 1)轮询均衡策略的配置

进入Apache的conf目录,打开httpd.conf文件,在文件的末尾加入:

    ProxyPass / balancer://proxy/         #注意这里以"/"结尾 
    <Proxy balancer://proxy> 
           BalancerMember http://192.168.6.37:6888/ 
           BalancerMember http://192.168.6.38:6888/ 
    </Proxy>  

      我们来观察上述的参数“ProxyPass / balancer://proxy/”,其中,“ProxyPass”是配置虚拟服务器的命令,“/”代表发送Web请求的URL前缀,如:http: //myserver/或者http://myserver/aaa,这些URL都将符合上述过滤条件;“balancer://proxy/”表示要配 置负载均衡,proxy代表负载均衡名;BalancerMember 及其后面的URL表示要配置的后台服务器,其中URL为后台服务器请求时的URL。以上面的配置为例,实现负载均衡的原理如下:

      假设Apache接收到http://localhost/aaa请求,由于该请求满足ProxyPass条件(其URL前缀为“/”),该请求会被分发 到后台某一个BalancerMember,譬如,该请求可能会转发到 http://192.168.6.37:6888/aaa进行处理。当第二个满足条件的URL请求过来时,该请求可能会被分发到另外一台 BalancerMember,譬如,可能会转发到http://192.168.6.38:6888/。如此循环反复,便实现了负载均衡的机制。

2)按权重分配均衡策略的配置

    ProxyPass / balancer://proxy/         #注意这里以"/"结尾 
    <Proxy balancer://proxy> 
            BalancerMember http://192.168.6.37:6888/  loadfactor=3 
            BalancerMember http://192.168.6.38:6888/  loadfactor=1 
    </Proxy>  

      参数”loadfactor”表示后台服务器负载到由Apache发送请求的权值,该值默认为1,可以将该值设置为1到100之间的任何值。以上面的配置 为例,介绍如何实现按权重分配的负载均衡,现假设Apache收到http://myserver/aaa 4次这样的请求,该请求分别被负载到后台服务器,则有3次连续的这样请求被负载到BalancerMember为 http://192.168.6.37:6888的服务器,有1次这样的请求被负载BalancerMember为http: //192.168.6.38:6888后台服务器。实现了按照权重连续分配的均衡策略。

3)权重请求响应负载均衡策略的配置

    ProxyPass / balancer://proxy/ lbmethod=bytraffic  #注意这里以"/"结尾 
    <Proxy balancer://proxy> 
             BalancerMember http://192.168.6.37:6888/  loadfactor=3 
             BalancerMember http://192.168.6.38:6888/  loadfactor=1 
     </Proxy>  

       参数“lbmethod=bytraffic”表示后台服务器负载请求和响应的字节数,处理字节数的多少是以权值的方式来表示的。 “loadfactor”表示后台服务器处理负载请求和响应字节数的权值,该值默认为1,可以将该值设置在1到100的任何值。根据以上配置是这么进行均 衡负载的,假设Apache接收到http://myserver/aaa请求,将请求转发给后台服务器,如果BalancerMember为http: //192.168.6.37:6888后台服务器负载到这个请求,那么它处理请求和响应的字节数是BalancerMember为http: //192.168.6.38:6888 服务器的3倍(回想(2)均衡配置,(2)是以请求数作为权重负载均衡的,(3)是以流量为权重负载均衡的,这是最大的区别)。

注:每次修改httpd.conf,用apachectl –k restart重新启动Apache。

**********************************************************

随 着访问量的不断提高,以及对响应速度的要求,进行负载均衡设置就显得非常必要了。公司的系统在最初设计的时候就已经考虑到了负载均衡的规划,www静态服 务器配置了两台,由于初期项目时间紧,并且访问量并不高,所以当时只用了一台,另一台在内网中,只是进行了同步,并为发挥出效用来。此次就是对负载均衡的 一个简单测试。
先介绍一下apache mod_proxy_balancer的几个配置规则(从网上找的):
将Apache作为LoadBalance前置机分别有三种不同的部署方式,分别是:

1)轮询均衡策略的配置

    ProxyPass / balancer://proxy/         #注意这里以"/"结尾 
    <Proxy balancer://proxy>  
           BalancerMember http://192.168.6.37:6888/  
           BalancerMember http://192.168.6.38:6888/ 
    </Proxy>  

      我们来观察上述的参数“ProxyPass / balancer://proxy/”,其中,“ProxyPass”是配置虚拟服务器的命令,“/”代表发送Web请求的URL前缀,如:http://myserver/或者http://myserver/aaa,这些URL都将符合上述过滤条件;“balancer://proxy/”表示要配置负载均衡,proxy代表负载均衡名;BalancerMember 及其后面的URL表示要配置的后台服务器,其中URL为后台服务器请求时的URL。以上面的配置为例,实现负载均衡的原理如下:
      假设Apache接收到http://localhost/aaa请求,由于该请求满足ProxyPass条件(其URL前缀为“/”),该请求会被分发到后台某一个BalancerMember,譬如,该请求可能会转发到 http://192.168.6.37:6888/aaa进行处理。当第二个满足条件的URL请求过来时,该请求可能会被分发到另外一台BalancerMember,譬如,可能会转发到http://192.168.6.38:6888/。如此循环反复,便实现了负载均衡的机制。

2)按权重分配均衡策略的配置

    ProxyPass / balancer://proxy/         #注意这里以"/"结尾 
    <Proxy balancer://proxy>  
            BalancerMember http://192.168.6.37:6888/  loadfactor=3  
            BalancerMember http://192.168.6.38:6888/  loadfactor=1 
    </Proxy>  

      参数”loadfactor”表示后台服务器负载到由Apache发送请求的权值,该值默认为1,可以将该值设置为1到100之间的任何值。以上面的配置 为例,介绍如何实现按权重分配的负载均衡,现假设Apache收到http://myserver/aaa 4次这样的请求,该请求分别被负载到后台服务器,则有3次连续的这样请求被负载到BalancerMember为http://192.168.6.37:6888的服务器,有1次这样的请求被负载BalancerMember为http://192.168.6.38:6888后台服务器。实现了按照权重连续分配的均衡策略。

    ProxyPass / balancer://proxy/ lbmethod=bytraffic  #注意这里以"/"结尾 
    <Proxy balancer://proxy>  
             BalancerMember http://192.168.6.37:6888/  loadfactor=3  
             BalancerMember http://192.168.6.38:6888/  loadfactor=1  
     </Proxy>  

       参数“lbmethod=bytraffic”表示后台服务器负载请求和响应的字节数,处理字节数的多少是以权值的方式来表示的。 “loadfactor”表示后台服务器处理负载请求和响应字节数的权值,该值默认为1,可以将该值设置在1到100的任何值。根据以上配置是这么进行均 衡负载的,假设Apache接收到http://myserver/aaa请求,将请求转发给后台服务器,如果BalancerMember为http://192.168.6.37:6888后台服务器负载到这个请求,那么它处理请求和响应的字节数是BalancerMember为http://192.168.6.38:6888 服务器的3倍(回想(2)均衡配置,(2)是以请求数作为权重负载均衡的,(3)是以流量为权重负载均衡的,这是最大的区别)。

看明白了没有,根据不同的需要,可以按这三种方式进行配置。我按照第三种配置的,感觉上这种对于负载的均衡更全面合理。我的配置很简单,如下:
先配置均衡器:

    <Proxy balancer://proxy> 
           BalancerMember ajp://127.0.0.1:8009/  loadfactor=1 
           BalancerMember http://192.168.10.6:8083/  loadfactor=1 
    </Proxy> 

其中http://192.168.10.6:8083实际上是另外一个端口启动的apache,为了测试,它就简单的直接转发所有请求到tomcat。
对于上次的VirtualHost进行以下的修改即可:

    <VirtualHost *:80> 
            ServerName www.test.com 
            DocumentRoot /www 
            DirectoryIndex index.html index.jsp 
            <Directory "/www"> 
                Options Indexes FollowSymLinks 
                AllowOverride None 
                Order allow,deny 
                Allow from all 
            </Directory> 
            <Directory "/control"> 
                Options Indexes FollowSymLinks 
                AllowOverride None 
                Order allow,deny 
                Allow from all 
            </Directory> 
            ProxyPass /nxt/images/ ! 
            ProxyPass /nxt/js/ ! 
            ProxyPass /nxt/css/ ! 
            #ProxyPass / ajp://127.0.0.1:8009/ 
            #ProxyPassReverse / ajp://127.0.0.1:8009/ 
            ProxyPass / balancer://proxy/ 
            ProxyPassReverse / balancer://proxy/ 
    </VirtualHost> 

注释掉之前的ajp转发,而配置成通过balancer去处理。
通过观察access log,的确有部分请求发送到了8083端口的apache上,而有部分是直接ajp转发到tomcat上了。对于更多的负载均衡的参数检测,待空了再做。

History命令用法 15 例

如果你经常使用 Linux 命令行,那么使用 history(历史)命令可以有效地提升你的效率。本文将通过实例的方式向你介绍 history 命令的 15 个用法。

使用 HISTTIMEFORMAT 显示时间戳
当你从命令行执行 history 命令后,通常只会显示已执行命令的序号和命令本身。如果你想要查看命令历史的时间戳,那么可以执行:

# export HISTTIMEFORMAT=’%F %T ‘
# history | more
1 2008-08-05 19:02:39 service network restart
2 2008-08-05 19:02:39 exit
3 2008-08-05 19:02:39 id
4 2008-08-05 19:02:39 cat /etc/redhat-release 继续阅读

此集合已经包含方案 http 的地址

出错信息:
“/”应用程序中的服务器错误。
——————————————————————————–

此集合已经包含方案 http 的地址。此集合中每个方案中最多只能包含一个地址。
参数名: item
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。

异常详细信息: System.ArgumentException: 此集合已经包含方案 http 的地址。此集合中每个方案中最多只能包含一个地址。
参数名: item

源错误:

执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪信息确定有关异常原因和发生位置的信息。 继续阅读

Check Replication Slave Status

This script produces no output when replication slave is running normally. If either IO or SQL threads are not running it will print a message indicating so and the “Last Error:” I typically set it up on a 2minute cron. It has some logic in place to avoid repeat e-mailing from CRON when down status is found. It will wait 15 minutes before producing the next message. You can also disable the scripts checking by changing the “active” variable to “no”. This allows users without direct access to cron to controll the script. This script assumes that a ~/.my.cnf will be in place for authentication. 继续阅读

通过 UPDATE STATISTICS 充分利用IDS优化器

通过 UPDATE STATISTICS 充分利用 Informix Dynamic Server 优化器

Bharath Sriram (bhsriram@in.ibm.com), 助理软件工程师, IBM Informix
Harshavardhan Changappa (vardhan.harsha@in.ibm.com), Software Engineer, IBM Informix
Priyambada Behera (prbehera@in.ibm.com), 系统软件工程师, IBM India Software Labs

通过 IBM® Informix® Dynamic Server(IDS) 中的 UPDATE STATISTICS 语句充分利用数据库优化器。阅读本文对这个 SQL 语句的简述,了解如何用它解决各种不同的问题。发现更新 统计信息的重要性,并了解如何收集统计信息。最后,浏览本文最后的 FAQ 小节,寻找您对这个重要的 SQL 语句所存疑问的答案。
继续阅读

编译文件的版本信息修改

This library provides an easy way to read, modify, and save version information resource(s) (RT_VERSION) in compiled executable modules (EXE, DLL, OCX, SCR etc.).

Sample usage
The attached file contains a sample project that utilizes the library (VerInfoLibTest). The test tool understands several command line parameters:

Test Application for Version Info Library
USAGE:

VerInfoLibTest.exe -system

Prints out version numbers of all DLLs in Windows system folder

VerInfoLibTest.exe -f <FileName>

Prints out version info string tables of a specified module

VerInfoLibTest.exe -u <FileName> <StringName> “<Value>”
Modifies the StringName value in the first String Table
in module version information

EXAMPLES:

VerInfoLibTest.exe -u mydll.dll CompanyName “New company name”
VerInfoLibTest.exe -u mydll.dll Comments “Updated comment”
VerInfoLibTest.exe -f mydll.dll

点击下载此文件

快速比较查询结果是否一致

Here’s a quick productivity tip: when optimizing queries by rewriting them to different forms that should return the same results, you can verify that you get the same results by taking a checksum of them.

Just set your pager to md5sum:

mysql> pager md5sum -
PAGER set to 'md5sum -'
mysql> select * from user;
b20bd3864962507e2e05cd8706440ffd  -
3 rows in set (0.00 sec)
mysql> select * from user;
b20bd3864962507e2e05cd8706440ffd  -
3 rows in set (0.00 sec)
mysql> select * from user;
b20bd3864962507e2e05cd8706440ffd  -
3 rows in set (0.00 sec)

入侵监测系统的构建(chkrootkit)

入侵监测系统的构建( chkrootkit )

前  言

  所谓 rootkit ,是一类入侵者经常使用的工具。这类工具通常非常的隐秘、令用户不易察觉,通过这类工具,入侵者建立了一条能够常时入侵系统,或者说对系统进行实时控制的途径。所以,我们用自由软件 chkrootkit 来建立入侵监测系统,来保证对系统是否被安装了 rootkit 进行监测。 继续阅读

Jboss4.03 web-console jmx-console 登录安全设置

Jboss4.03 web-console jmx-console 登录安全设置

http://localhost:8080/ 默认使用8080端口

默认配置了以下服务:

JMX Console
JBoss Web Console
为了安全起见,需要用户通过授权进行访问。

首先对JMX-Console进行设置,在《Getting Started with JBoss 4.0 Release 4》的2.2.3. Security Service小节中给出了方法,但是缺少了一点点东西:
STEP 1:
找到%JBOSS_HOME%/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml文件,根据说明,去掉注释。

<jboss-web>
   <!-- Uncomment the security-domain to enable security. You will
      need to edit the htmladaptor login configuration to setup the
      login modules used to authentication users. -->
   <security-domain>java:/jaas/jmx-console</security-domain>
</jboss-web>

STEP 2:
与jboss-web.xml同级目录下还有一个文件web.xml,找到其中的节点,根据说明,取消注释。

……

   <!-- A security constraint that restricts access to the HTML JMX console
   to users with the role JBossAdmin. Edit the roles to what you want and
   uncomment the WEB-INF/jboss-web.xml/security-domain element to enable
   secured access to the HTML JMX console.
   -->
 
   <security-constraint>
     <web-resource-collection>
       <web-resource-name>HtmlAdaptor</web-resource-name>
       <description>An example security config that only allows users with the
         role JBossAdmin to access the HTML JMX console web application
       </description>
       <url-pattern>/*</url-pattern>
       <http-method>GET</http-method>
       <http-method>POST</http-method>
     </web-resource-collection>
     <auth-constraint>
       <role-name>JBossAdmin</role-name>
     </auth-constraint>
   </security-constraint>

   <security-constraint>
     <web-resource-collection>
       <web-resource-name>Public</web-resource-name>
       <url-pattern>/public/*</url-pattern>
       <http-method>GET</http-method>
       <http-method>POST</http-method>
     </web-resource-collection>
   </security-constraint>

……

STEP 3:
在第一步中的jmx-console安全域和第二步中的运行角色JBossAdmin都是在login-config.xml中配置,我们在%JBOSS_HOME%/server/default/conf/props下找到它。查找名字为:jmx-console的application-policy:

    <application-policy name = "jmx-console">
       <authentication>
          <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule"
             flag = "required">
           <module-option name="usersProperties">props/jmx-console-users.properties</module-option>
           <module-option name="rolesProperties">props/jmx-console-roles.properties</module-option>
          </login-module>
       </authentication>
    </application-policy>

文件props/jmx-console-users.properties定义了用户名、密码;props/jmx-console-roles.properties定义了用户所属角色,找到后自行修改或重新定义用户名、密码。

配置web-console,具体方法同jmx-console,就是位置不同:

jboss-web.xml、web.xml在%JBOSS_HOME%/server/default/deploy/management/console-mgr.sar\web-console.war/WEB-INF下;
login-config.xml还是原来的那个,把application-policy名为$webConsoleDomain的部分改成你需要的web-console;
web-console-users.properties、web-console-roles.properties定义了访问web-console的用户、用户角色,具体位置自己去找,使用find /jboss -name web-console-users.properties 找到以后可以修改用户名、密码。

ADO 连接字符串实例大全

ADO Connection String Samples
This page contains sample ADO connection strings for ODBC DSN / DSN-Less, OLE DB Providers, Remote Data Services (RDS), MS Remote, and MS DataShape.  Also included are ADO.NET connection strings for MySQL, ODBC, OLE DB, Oracle, and SQL Server .NET Data Providers. These sample connection strings are compiled by Carl Prothman, a Microsoft ASP.NET MVP and Microsoft Certified Professional (MCP)  If you have an ADO or ADO.NET connection string that is not listed below, or you see an connection string that does not have the correct setting, please send an email to Carl Prothman.  Thanks!
继续阅读