nginx可以根据客户端IP进行负载均衡,在upstream里设置ip_hash,就可以针对同一个C类地址段中的客户端选择同一个后端服务器,除非那个后端服务器宕了才会换一个。

nginx的upstream目前支持的5种方式的分配
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
upstream backserver {
server 192.168.0.14;
server 192.168.0.15;
}

2、指定权重
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
upstream backserver {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

3、IP绑定 ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
upstream backserver {
ip_hash;
server 192.168.0.14:88;
server 192.168.0.15:80;
}

4、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。
upstream backserver {
server server1;
server server2;
fair;
}

5、url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。
upstream backserver {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}

在需要使用负载均衡的server中增加

proxy_pass http://backserver/;
upstream backserver{
ip_hash;
server 127.0.0.1:9090 down; (down 表示单前的server暂时不参与负载)
server 127.0.0.1:8080 weight=2; (weight 默认为1.weight越大,负载的权重就越大)
server 127.0.0.1:6060;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down或者忙的时候,请求backup机器)
}

max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误

fail_timeout:max_fails次失败后,暂停的时间

 

最近对Web App开发开始深入,老总做了个类似于Phonegap的中间件,整体上web app有了个初始的框架雏形,现在又有需求自动生成apk,将开发人员从打包工作中解脱出来(你可以想象同一个软件,只改一个去往网页的地址和apk包名,要打上百个包有多累),所以就学习Rexsee这个开源项目的一点形式,通过网站提交html页面,修改一些基本数据,自动生成apk,达到批量化的目的。所以先开始学习ant….

一,准备ant, 搭ant环境,这个没得所,谷大师会告诉你…

二,配置Android SDK环境,将tools 和platform-tools 都配置到环境变量Path中…

  三,创建一个android项目 
参数说明:
-k /--package 为命名空间(包名)-a /--name 工程名
-p /--path 项目              -t 为目标平台的版本编号(由下面步骤1列出的)

1)、列出你SDK中已有的平台版本,执行命令“ android.bat list targets”

2)、create一个Android工程,执行命令“android create project -k com.vatata.atest.ant  -a AntAndroidTest1  -p c:\test\AntAndroidTest1 -t 2”

这样工程创建完后,ant的build.xml 就自动生成了…

3) 执行“ant debug” ,这样就会编译生成apk…

四)Apk 安装

通过第三部生成的apk会出现在c:\test\AntAndroidTest1中的bin目录下,现在就可以安装了

1)--> adb device

2) -->

adb –s SH17JV805161 install c:\test\AntAndroidTest1\ bin\AntAndroidTest3-debug.apk

就行了

 

然后apk就安装到手机上,可以测试了…

 

 

那么再回到我之前的问题,一个apk 只要修改一个链接和包名,那么我们可以通过写文件的形式,修改某个字段和Manifest中的packagename,那么重新执行ant debug,这个apk又重新生成了,就是个全新的apk了,很爽吧…

转:http://www.senra.me/remove-proxmox-ve-dont-have-valid-subscription-notice/

一.问

最近把我的OVH独服重装了下,打算用Proxmox开点VM来用,省得一直吃灰(雾,安装很简单,毕竟是OVH提供的模板,但是,这玩意每次登陆都会有个蛋疼的提示(You do not have a valid subscription for this server. Please visit www.proxmox.com to get a list of available options.),而且找了半天没找到有关的地方,然后去官网看了下订阅的价格,呵呵呵,我还是自己想办法吧……

二.解

对于一个网页,要明白它到底发生了什么,那当然是直接F12怼一波,看了下控制台发现有个pvemanagerlib.js,看看名字就觉得很像是这玩意在搞事啊,右击在新页面打开,看看内容,首先根据之前的提示文字来搜索

很好,找到目标,然后再次搜索noSubKeyHtml

一切顺利,找到了执行订阅检测的地方,现在简单了,直接改判断条件或者怼掉show操作都行,问题来了,这个文件在浏览器里又不能改,它到底在哪?

其实很简单,随便locate一下就找到了,我们先用cp备份一下,然后开始修改这个文件

然后注销重新登录,一切OK,世界清静

转:http://www.senra.me/add-internal-adapter-for-proxmox-to-secure-intranet-communication/

一.锲子

最近在配置hadoop过程中为了让各节点使用内网通信,研究了下怎么在proxmox下添加内网地址,一开始觉得挺容易,然后发现有点小坑,记录下。

二.Here We Go

首先需要在宿主机上添加个内网网卡,可以使用Proxmox添加,也可以直接改配置文件,效果一样,面板如下,vlan aware随意

编辑文件的话需要修改/etc/network/interfaces ,添加如下,同样vlan aware 随意

之后我们便为宿主机添加了一个内网网卡,地址为10.10.10.254

之后我们在创建的容器或是虚拟机上同样添加一个网卡,mac地址会自动生成,网关就写宿主机的,桥接写我们添加的那个网卡,然后就可以了

PS.需要注意的有一点,先加内网地址后加外网地址,否则默认路由会是内网,这个是个坑,我一开始没在意然后发现怎么也访问不了

转:http://www.senra.me/add-tun-tap-support-for-proxmox-ve-4-lxc-containers/

一.为什么

Proxmox VE 4将3代的OpenVZ支持去除换成了LXC,算是跟随趋势吧,但是LXC和OpenVZ还是有挺多不同的,在权限上更是如此,而网上最多的还是OVZ相关的教程,LXC的是真的少,不过一直以来没需求,所以没怎么折腾,最近在搞内网,所以为了用Tunnel还是得把TUN/TAP支持打开。

二.怎么办

首先当然是谷歌咯,关键词选得好马上出结果,proxmox官方论坛讨论贴 https://forum.proxmox.com/threads/tun-devices-in-ve-4-lxc.23473

总结一下

①.如果需要对所有(之后创建的)LXC容器全部开启tun/tap

那么需要修改/etc/lxc/default.conf,添加lxc.cgroup.devices.allow = c 10:200 rwm

当然,也可以创建/usr/share/lxc/config/common.conf.d/02-tuntap.conf 这样的配置文件来取得同样的效果

②.而如果只要对指定容器有效,则需要修改/etc/pve/lxc/[ID].conf , [ID]为你的容器编号

还没完,这样只是给了权限,实际上还没好,需要在容器的/etc/rc.local 自启动文件中添加如下

这样你执行需要tun/tap的程序时就不会出问题了

三.附录(记如何在v3版本的ovz下开启tun/tap)

a. 编辑vz.conf文件,添加iptable_nat ipt_state这2个东西

b. 手动关闭所有小鸡,重启openvz模块
/etc/init.d/vz restart

c. 对小鸡进行必要的设置(这里以小鸡100为例,100是指PID,WEB控制面板里可以看到)

d. 母鸡加载一次这些

e. 启动小鸡输入以下命令

Hbase hbck

[plain] view plain copy

在CODE上查看代码片派生到我的代码片

  1. 新版本的 hbck 可以修复各种错误,修复选项是:
  2. (1)-fix,向下兼容用,被-fixAssignments替代
  3. (2)-fixAssignments,用于修复region assignments错误
  4. (3)-fixMeta,用于修复meta表的问题,前提是HDFS上面的region info信息有并且正确。
  5. (4)-fixHdfsHoles,修复region holes(空洞,某个区间没有region)问题
  6. (5)-fixHdfsOrphans,修复Orphan region(hdfs上面没有.regioninfo的region)
  7. (6)-fixHdfsOverlaps,修复region overlaps(区间重叠)问题
  8. (7)-fixVersionFile,修复缺失hbase.version文件的问题
  9. (8)-maxMerge <n> (n默认是5),当region有重叠是,需要合并region,一次合并的region数最大不超过这个值。
  10. (9)-sidelineBigOverlaps ,当修复region overlaps问题时,允许跟其他region重叠次数最多的一些region不参与(修复后,可以把没有参与的数据通过bulk load加载到相应的region)
  11. (10)-maxOverlapsToSideline <n> (n默认是2),当修复region overlaps问题时,一组里最多允许多少个region不参与
  12. 由于选项较多,所以有两个简写的选项
  13. (11) -repair,相当于-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile -sidelineBigOverlaps
  14. (12)-repairHoles,相当于-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans
  15. 新版本的 hbck
  16. (1)缺失hbase.version文件
  17.  加上选项 -fixVersionFile 解决
  18. (2)如果一个region即不在META表中,又不在hdfs上面,但是在regionserver的online region集合中
  19.  加上选项 -fixAssignments 解决
  20. (3)如果一个region在META表中,并且在regionserver的online region集合中,但是在hdfs上面没有
  21.  加上选项 -fixAssignments -fixMeta 解决,( -fixAssignments告诉regionserver close region),( -fixMeta删除META表中region的记录)
  22. (4)如果一个region在META表中没有记录,没有被regionserver服务,但是在hdfs上面有
  23. 加上选项 -fixMeta -fixAssignments 解决,( -fixAssignments 用于assign region),( -fixMeta用于在META表中添加region的记录)
  24. (5)如果一个region在META表中没有记录,在hdfs上面有,被regionserver服务了
  25. 加上选项 -fixMeta 解决,在META表中添加这个region的记录,先undeploy region,后assign
  26. (6)如果一个region在META表中有记录,但是在hdfs上面没有,并且没有被regionserver服务
  27. 加上选项 -fixMeta 解决,删除META表中的记录
  28. (7)如果一个region在META表中有记录,在hdfs上面也有,table不是disabled的,但是这个region没有被服务
  29. 加上选项 -fixAssignments 解决,assign这个region
  30. (8)如果一个region在META表中有记录,在hdfs上面也有,table是disabled的,但是这个region被某个regionserver服务了
  31. 加上选项 -fixAssignments 解决,undeploy这个region
  32. (9)如果一个region在META表中有记录,在hdfs上面也有,table不是disabled的,但是这个region被多个regionserver服务了
  33. 加上选项 -fixAssignments 解决,通知所有regionserver close region,然后assign region
  34. (10)如果一个region在META表中,在hdfs上面也有,也应该被服务,但是META表中记录的regionserver和实际所在的regionserver不相符
  35. 加上选项 -fixAssignments 解决
  36. (11)region holes
  37. 需要加上 -fixHdfsHoles ,创建一个新的空region,填补空洞,但是不assign 这个 region,也不在META表中添加这个region的相关信息
  38. (12)region在hdfs上面没有.regioninfo文件
  39. -fixHdfsOrphans 解决
  40. (13)region overlaps
  41. 需要加上 -fixHdfsOverlaps
  42. 说明:
  43. (1)修复region holes时,-fixHdfsHoles 选项只是创建了一个新的空region,填补上了这个区间,还需要加上-fixAssignments -fixMeta 来解决问题,( -fixAssignments 用于assign region),( -fixMeta用于在META表中添加region的记录),所以有了组合拳 -repairHoles 修复region holes,相当于-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans
  44. (2) -fixAssignments,用于修复region没有assign、不应该assign、assign了多次的问题
  45. (3)-fixMeta,如果hdfs上面没有,那么从META表中删除相应的记录,如果hdfs上面有,在META表中添加上相应的记录信息
  46. (4)-repair 打开所有的修复选项,相当于-fixAssignments -fixMeta -fixHdfsHoles -fixHdfsOrphans -fixHdfsOverlaps -fixVersionFile -sidelineBigOverlaps
  47. 新版本的hbck从(1)hdfs目录(2)META(3)RegionServer这三处获得region的Table和Region的相关信息,根据这些信息判断并repair

示例:

[plain] view plain copy

在CODE上查看代码片派生到我的代码片

  1. 查看hbasemeta情况
  2. hbase hbck
  3. 1.重新修复hbase meta表(根据hdfs上的regioninfo文件,生成meta表)
  4. hbase hbck -fixMeta
  5. 2.重新将hbase meta表分给regionserver(根据meta表,将meta表上的region分给regionservere)
  6. hbase hbck -fixAssignments

##############################################
#### SSH Tunnel; 经测试,已经打通
##############################################
# 公网服务器外网IP: 115.28.9.136
# 公网服务器内网IP: 10.144.7.195
# 内网服务器内网IP: 10.144.7.191

### 1 先登录 115.28.9.136

ssh root@115.28.9.136 -p 22

#通过 webmin 修改 ssh配置,并应用变更
# 实质是 /etc/ssh/sshd_config 文件
GatewayPorts yes
### 2 在 136 上登录 10.144.7.191

ssh root@10.144.7.191 -p 22

### 3 在 10.144.7.191 上执行:
# 即通过此SSH后台登陆 195机器,监听了 195:19122端口,
# 此时访问 136:19122 的请求,相当于都转发到本地的22端口了。
# -Nf 是后台命令的意思
ssh -Nf 10.144.7.195 -R 19122:10.144.7.191:22

# 此时,客户端通过 115.28.9.136:19122 登录,实际上登陆的就是 10.144.7.191:22 服务器了。

来自官方手册:https://nodejs.org/en/download/package-manager/#enterprise-linux-and-fedora

Including Red Hat® Enterprise Linux® / RHEL, CentOS and Fedora.

Node.js is available from the NodeSource Enterprise Linux and Fedora binary distributions repository. Support for this repository, along with its scripts, can be found on GitHub at nodesource/distributions.

Note that the Node.js packages for EL 5 (RHEL5 and CentOS 5) depend on the EPEL repository being available. The setup script will check and provide instructions if it is not installed.

Run as root on RHEL, CentOS or Fedora, for Node.js v6 LTS:

curl --silent --location https://rpm.nodesource.com/setup_6.x | bash -

Alternatively for Node.js v7:

curl --silent --location https://rpm.nodesource.com/setup_7.x | bash -

Alternatively for Node.js 0.10:

curl --silent --location https://rpm.nodesource.com/setup | bash -

Then install, as root:

yum -y install nodejs

剁手买了牛逼的2K显示器,美呵呵的回来拿HDMI插在电脑上,发现最高只能设置1920x1080的分辨率,当时立马懵比了。老台式机或笔记本没有DP接口只有HDMI咋办,如果是台式机还好,装个带DP的显卡即可,笔记本咋整?比如核芯显卡HD4000一类的,呵呵了。

上网搜了一圈,发现大家的解决方案都是利用intel显卡驱动中自定义分辨率的方式使用CVT-RB时钟标准实现HDMI传输55赫兹2560x1440的分辨率,我设置过后,每次一点击应用,屏幕无反应也无报错,后来在intel官方社区查到解决方案,其中第三步没有做,导致失败。

以下是正文:

参考:https://communities.intel.com/thread/42847

Step 1: Run "CustomModeApp". Just push Win+R and enter: CustomModeApp, press OK.

第一步:打开“自定义分辨率”,桌面右键“图形选项”-“自定义分辨率”;或者按Win键+R打开运行窗口,输入"CustomModeApp",回车。

 

Step 2. Create your resolution (here are the settings for my Dell U2711 on 2560x1440) and click Add:

第二步:创建自定义的分辨率设置,见下图。我使用的HDMI线比较便宜,在55赫兹下会偶尔出现瞬间黑屏现象,将分辨率下调至50赫兹便可解决。

step2.png

Step 3. Check if your monitor driver allow this resolution (probably not...):

Right click on your desktop, choose "Screen resolution".

Select your external display, by clicking on it, then click "Advanced settings".

Go to tab "Monitor" and uncheck "Hide modes that this monitor cannot display".

Like this:

第三步:这点非常重要,博主在此走了不少弯路,一定要在去掉“隐藏该监视器无法显示的模式”前面的勾,否则执行第四步的时候会出现提示成功但实际没有任何变化的现象。

具体步骤是,桌面右键-显示设置-高级显示设置(如果是笔记本需要注意,要在多显示器这里设置为仅在2上显示,也就是外接的显示器)-点击一下上面的2,然后在最下面点击“显示适配器属性”,然后如下图所示设置。

Step3.png

Click OK.

 

Step 4. Select the correct resolution.

Right click on your desktop and choose: "Graphic Properties..."

The new resolution is listed. Choose it:

第四步:以上操作完毕后,这里就很简单了,桌面右键-图形属性-显示器-分辨率,选择你之前自定义好的分辨率,然后点击应用。

Step4.png

Click apply. You're done. If nothing happens after clicking apply, (in my case) your monitor driver still does not allow this setting.

呵呵,祝君好运!

你可以通过运行以下命令。

sudo yum install epel-release

现在可以使用yum命令安装Node.js了。

sudo yum install nodejs

因为在开发过程中我需要管理节点包,我还要安装新公共管理的软件包管理器,使用以下命令。

sudo yum install npm