haproxy配置文件

Posted 小秒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了haproxy配置文件相关的知识,希望对你有一定的参考价值。

haproxy配置文件

 

思路:读一行、写一行

复制代码
global
        log 127.0.0.1 local2
        daemon
        maxconn 256
        log 127.0.0.1 local2 info
defaults
        log global
        mode http
        timeout connect 5000ms
        timeout client 50000ms
        timeout server 50000ms
        option  dontlognull

listen stats :8888
        stats enable
        stats uri       /admin
        stats auth      admin:1234

frontend oldboy.org
        bind 0.0.0.0:80
        option httplog
        option httpclose
        option  forwardfor
        log global
        acl www hdr_reg(host) -i www.oldboy.org
        use_backend www.oldboy.org if www

backend www.oldboy.org
        server 100.1.7.9 100.1.7.9 weight 20 maxconn 3000
        
backend buy.oldboy.org
        server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
#!/usr/bin/env python
# -*- coding:utf-8 -*-
 
 
def fetch(backend):
    result = []
    with open(\'ha.conf\', \'r\') as f:
        flag = False
        for line in f:
            if line.strip().startswith(\'backend\') and line.strip() == "backend " + backend:
                flag = True
                continue
            if flag and line.strip().startswith(\'backend\'):
                break
            if flag and line.strip():
                result.append(line.strip())
 
    return result
 
 
def add(backend, record):
    result = fetch(backend)
    if not result:
        # 无backend,无record
        pass
    else:
        # 有backend
        if record in result:
            # 记录record
            pass
        else:
            result.append(record)
            with open(\'ha.conf\', \'r\') as old, open(\'new.conf\', \'w\') as new:
                continue_flag = False
                for line in old:
 
                    if line.strip().startswith(\'backend\') and line.strip() == "backend " + backend:
                        continue_flag = True
                        new.write(line)
                        for temp in result:
                            new.write(" "*8 + temp + "\\n")
                        continue
 
                    if continue_flag and line.strip().startswith(\'backend\'):
                        continue_flag = False
 
                    if continue_flag:
                        pass
                    else:
                        new.write(line)
 
 
def add2(backend, record):
    with open(\'ha.conf\', \'r\') as old, open(\'new.conf\', \'w\') as new:
        in_backend = False
        has_backend = False
        has_record = False
        for line in old:
            if line.strip().startswith(\'backend\') and line.strip() == "backend " + backend:
                has_backend = True
                in_backend = True
                new.write(line)
                continue
 
            if in_backend and line.strip().startswith(\'backend\'):
                if not has_record:
                    new.write(" "*8 + record + \'\\n\')
                new.write(line)
                in_backend = False
                continue
 
            if in_backend and line.strip() == record:
                has_record = True
                new.write(line)
                continue
 
            if line.strip():
                new.write(line)
 
        if not has_backend:
            # 写backend,写record
            new.write(\'backend \'+ backend + \'\\n\')
            new.write(\' \'*8 + record + \'\\n\')
 
 
# ret = fetch("www.oldboy.org")
# print(ret)
 
# add(\'www.oldboy.org\', "server 100.1.7.10 100.1.7.10 weight 20 maxconn 3000")
# add2(\'www.oldboy.org\', "server 100.1.7.11 100.1.7.11 weight 20 maxconn 3000")

以上是关于haproxy配置文件的主要内容,如果未能解决你的问题,请参考以下文章

HAProxy简介及常用配置文件详解

Part1 - 修改haproxy配置文件

Haproxy配置文件(haproxy.cfg)

haproxy 配置文件详解 之 配置文件示例

python之haproxy配置文件操作(第三天)

haproxy安装配置及haproxy+keepalived配置