By run I meant you have to start it as root user which you are doing
anyway. Can you run:

# nc -l -p 80

as root just to confirm you can bind to port 80?
On 25/07/2015 2:10 PM, "Igor Cicimov" <ig...@encompasscorporation.com>
wrote:

> You need to run haproxy as root to bind to ports lower than 1024
> On 25/07/2015 1:36 PM, "Tim Dunphy" <bluethu...@gmail.com> wrote:
>
>> Hi Yuan,
>>
>> Nice.
>>> Do you use selinux in prod.
>>> regards,
>>> ; Yuan
>>
>>
>> Yep! Actually I use it every chance I get. Prod/stage/dev and my own
>> hobby environments. And right now actually what I was discussing was a
>> hobby environment.
>>
>> And actually if I could bother you guys one more time, I do have one more
>> issue to solve. LOL
>>
>> And this time it's guaranteed not to be an SELinux issue. Because I tried
>> running haproxy with SELInux on and off this time.
>>
>> But what's happening now, is that HA/Proxy is not creating the http port
>> for the 'stats' interface. I've setup stats to listen on port 80. But for
>> some reason that's not happening.
>>
>> Here's my config one more time, with the trouble part in bold:
>>
>> global
>>     log 127.0.0.1 local0 notice
>>     user haproxy
>>     group haproxy
>>
>> defaults
>>     log global
>>     retries 2
>>     timeout connect 3000
>>     timeout server 5000
>>     timeout client 5000
>>
>> listen mysql-cluster
>>     bind 0.0.0.0:3306
>>     mode tcp
>>     option mysql-check user haproxy_check
>>     balance roundrobin
>>     server mysql-1 52.3.28.48:3306 check
>>     server mysql-2 52.2.0.176:3306 check
>>
>>
>>
>>
>>
>>
>>
>>
>> *listen 0.0.0.0:80 <http://0.0.0.0:80>    mode http    stats enable
>> stats uri /    stats realm Strictly\ Private    stats auth admin:secret*
>> Currently haproxy is listening on the first port specified* - 3306 - *but
>> not listening on port 80.
>>
>> Observe:
>>
>> [root@ha1:/etc/haproxy] #lsof -i :3306
>> COMMAND   PID    USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
>> *haproxy 11653 haproxy    4u  IPv4 7145270      0t0  TCP *:mysql (LISTEN)*
>>
>> [root@ha1:/etc/haproxy] #lsof -i :80
>> [root@ha1:/etc/haproxy] #
>>
>> [root@ha1:/etc/haproxy] #telnet localhost 80
>> Trying 127.0.0.1...
>> telnet: connect to address 127.0.0.1: Connection refused
>>
>> Port 80 simply isn't listening.
>>
>> And this time, I can't blame it on SELinux being on:
>>
>> [root@ha1:/etc/haproxy] #getenforce
>> Permissive
>>
>> I've grepped thru /var/log/messages but not turned up any clues to this
>> one.
>>
>> And I really would like to get the stats interface up and running.
>>
>> Any thoughts here? I'm wondering what I can do to get stats working.
>>
>> Thanks,
>> Tim
>>
>>
>>
>> On Fri, Jul 24, 2015 at 10:52 PM, Gmail <longwuy...@gmail.com> wrote:
>>
>>> Nice.
>>> Do you use selinux in prod.
>>> regards,
>>> ; Yuan
>>>
>>> On 07/25/2015 09:17 AM, Tim Dunphy wrote:
>>>
>>>> Bingo!!!
>>>>
>>>> The problem was with SELinux. Not sure what took me so long to think of
>>>> it...!!!
>>>>
>>>> So set the mysql listener back to port 3306. Turned off SELinux with
>>>> setenforce 0. Then it started right up!!! And port 3306 was listening.
>>>>
>>>> Then I consulted with audit2why and saw the following:
>>>>
>>>> type=AVC msg=audit(1437786617.963:28856863): avc:  denied  {
>>>> name_connect }
>>>> for  pid=29175 comm="haproxy" dest=3306
>>>> scontext=system_u:system_r:haproxy_t:s0
>>>> tcontext=system_u:object_r:mysqld_port_t:s0 tclass=tcp_socket
>>>>
>>>>          Was caused by:
>>>>          The boolean haproxy_connect_any was set incorrectly.
>>>>          Description:
>>>>          Allow haproxy to connect any
>>>>
>>>>          Allow access by executing:
>>>>          # *setsebool -P haproxy_connect_any 1*
>>>>
>>>>
>>>> I just ran that command you see above in bold, and then all was right
>>>> with
>>>> the world.
>>>>
>>>> [root@ha1:/etc/haproxy] #systemctl status haproxy
>>>> haproxy.service - HAProxy Load Balancer
>>>>     Loaded: loaded (/usr/lib/systemd/system/haproxy.service; disabled)
>>>>     Active: active (running) since Sat 2015-07-25 01:14:53 UTC; 33s ago
>>>>   Main PID: 30618 (haproxy-systemd)
>>>>     CGroup: /system.slice/haproxy.service
>>>>             ├─30618 /usr/sbin/haproxy-systemd-wrapper -f
>>>> /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
>>>>             ├─30619 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p
>>>> /run/haproxy.pid -Ds
>>>>             └─30620 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p
>>>> /run/haproxy.pid -Ds
>>>>
>>>> Jul 25 01:14:53 ha1 systemd[1]: Starting HAProxy Load Balancer...
>>>> Jul 25 01:14:53 ha1 systemd[1]: Started HAProxy Load Balancer.
>>>> Jul 25 01:14:53 ha1 haproxy-systemd-wrapper[30618]:
>>>> haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f
>>>> /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
>>>>
>>>> [root@ha1:/etc/haproxy] #lsof -i :3306
>>>> COMMAND   PID    USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
>>>> haproxy 30620 haproxy    1u  IPv4 7075172      0t0  TCP
>>>> ha1.example.com:55499->ec2-52-2-0-xxx.compute-1.amazonaws.com:mysql
>>>> (SYN_SENT)
>>>> haproxy 30620 haproxy    4u  IPv4 7074731      0t0  TCP *:mysql (LISTEN)
>>>>
>>>>
>>>> Thanks for nudging me in the right direction. All I had to hear was the
>>>> word 'selinux' and from there it all fell into place!
>>>>
>>>> Thanks!!
>>>> Tim
>>>>
>>>> On Fri, Jul 24, 2015 at 8:20 PM, Gmail <longwuy...@gmail.com> wrote:
>>>>
>>>>  I could be completely wrong here and I am curious to know the answer
>>>>> myself. Please don't take this as a solution, just my thoughts.
>>>>>
>>>>> First, you can not use backend ip-address of 10.x.x.x subnet because
>>>>> each
>>>>> account's VPC is seggregated. If you do want to use 10.X.X.X ipadress
>>>>> you
>>>>> have to setup a inter VPC endpoint in AWS. I would just use EIP.
>>>>>
>>>>> For the port 3306, try to use nc to listen on that port or iperf. Do yo
>>>>> uhave iptables turned on.
>>>>>
>>>>> I would check "systemctl -l status haproxy.service"
>>>>>
>>>>> I would check lsof -i why can't bind to 3306 on loopback ipaddress.
>>>>>
>>>>> I would check iptables or selinux preventing the bind.
>>>>>
>>>>> It wil be interesting to know the source ipaddress of MySQL client ec2
>>>>> instance.
>>>>> Interesting if you can Copy/paste output of "telnet
>>>>> <haproxynode_ipaddress> 3306" from mysql client ec2 instance , here.
>>>>> Interesting if you can  Copy/paste output of "telnet 10.10.10.10 3306"
>>>>> from haproxy ec2 instances, here.
>>>>> Interesting if you can  Copy/paste output of "telnet 10.10.10.11 3306"
>>>>> from haproxy ec2 instances, here.
>>>>>
>>>>> I I was doing this, maybe I would consider testing something like ;
>>>>> ..
>>>>> frontend mysql_lb_fe 0.0.0.0:3306
>>>>> ....
>>>>> acl host_myql_lb hdr(host) -i mysql-lb
>>>>> ..
>>>>> ..
>>>>> use_backend mysql_lb_backend if host mysql_lb
>>>>> ..
>>>>> ..
>>>>> backend  mysql_lb_be
>>>>> ..
>>>>> ..
>>>>>
>>>>> option mysql-check user haproxy_check
>>>>>       balance roundrobin
>>>>>       server mysql-1 10.10.10.10:3306 check
>>>>>       server mysql-2 10.10.10.11:3306 check
>>>>>
>>>>> Thanks,
>>>>> ; Yuan
>>>>>
>>>>>
>>>>> On 07/25/2015 06:41 AM, Tim Dunphy wrote:
>>>>>
>>>>>  Hello Nenad,
>>>>>>
>>>>>>      Jul 24 03:44:18 ha1 haproxy-systemd-wrapper[25034]: [ALERT]
>>>>>>
>>>>>>             204/034418 (25035) : *Starting proxy mysql-cluster:
>>>>>>> cannot bind
>>>>>>>            s...:3306]*
>>>>>>>
>>>>>>>  Nothing listening on the port I'm trying to bind to: 3306
>>>>>>
>>>>>> [root@ha1:~] #ss -lpt | fgrep 3306
>>>>>> [root@ha1:~] #lsof -i :3306
>>>>>> [root@ha1:~] #netstat -tulpn | grep -i listen | grep 3306
>>>>>> [root@ha1:~] #
>>>>>>
>>>>>> While we're on the subject of listening ports, here's a list of all
>>>>>> listening ports on the haproxy host:
>>>>>>
>>>>>> [root@ha1:~] #netstat -tulpn | grep -i listen
>>>>>> tcp        0      0 0.0.0.0:35145           0.0.0.0:*
>>>>>> LISTEN      -
>>>>>> tcp        0      0 0.0.0.0:56814           0.0.0.0:*
>>>>>> LISTEN      16346/rpc.statd
>>>>>> tcp        0      0 0.0.0.0:111             0.0.0.0:*
>>>>>> LISTEN      16455/rpcbind
>>>>>> tcp        0      0 0.0.0.0:22              0.0.0.0:*
>>>>>> LISTEN      16396/sshd
>>>>>> tcp6       0      0 :::49349                :::*
>>>>>> LISTEN      16346/rpc.statd
>>>>>> tcp6       0      0 :::111                  :::*
>>>>>> LISTEN      16455/rpcbind
>>>>>> tcp6       0      0 :::47314                :::*
>>>>>> LISTEN      -
>>>>>> tcp6       0      0 :::22                   :::*
>>>>>> LISTEN      16396/sshd
>>>>>>
>>>>>> I thought I was beginning to understand this problem. That haproxy was
>>>>>> trying to bind on port 3306 from the mysql host on another machine.
>>>>>> But
>>>>>> come to think of it, that doesn't make a lot of sense.
>>>>>>
>>>>>> Because I already have haproxy setup for some web servers, and there
>>>>>> it
>>>>>> creates port 80 on the haproxy node. It's not trying to connect to a
>>>>>> foreign source. Not sure where I got that idea!!
>>>>>>
>>>>>> I also tried binding the mysql section to another port that wasn't in
>>>>>> use.
>>>>>> I tried port 3307,3308. I even tried binding the mysql section of the
>>>>>> config to a weird port I just grabbed off of the top of my head. I
>>>>>> tried
>>>>>> binding it to port 4444.
>>>>>>
>>>>>> And there I still got a bind error:
>>>>>>
>>>>>>    [ALERT] 204/223303 (13081) : Starting proxy mysql-cluster: cannot
>>>>>> bind
>>>>>> socket [0.0.0.0:4444]
>>>>>>
>>>>>>
>>>>>>    Now watch this!! If I bind the mysql section to port 80 instead of
>>>>>> any
>>>>>> other port.. haproxy starts up without complaint!
>>>>>>
>>>>>> listen mysql-cluster
>>>>>>       bind 0.0.0.0:80
>>>>>>       mode tcp
>>>>>>       option mysql-check user haproxy_check
>>>>>>       balance roundrobin
>>>>>>       server mysql-1 10.0.0.xxx :3306 check
>>>>>>       server mysql-2 10.0.0.xxx:3306 check
>>>>>>
>>>>>> [root@ha1:/etc/haproxy] #systemctl status haproxy
>>>>>> haproxy.service - HAProxy Load Balancer
>>>>>>      Loaded: loaded (/usr/lib/systemd/system/haproxy.service; enabled)
>>>>>>      Active: active (running) since Fri 2015-07-24 22:35:03 UTC; 4s
>>>>>> ago
>>>>>>    Main PID: 13213 (haproxy-systemd)
>>>>>>      CGroup: /system.slice/haproxy.service
>>>>>>              ├─13213 /usr/sbin/haproxy-systemd-wrapper -f
>>>>>> /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
>>>>>>              ├─13214 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p
>>>>>> /run/haproxy.pid -Ds
>>>>>>              └─13215 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p
>>>>>> /run/haproxy.pid -Ds
>>>>>>
>>>>>> Jul 24 22:35:03 ha1 systemd[1]: Starting HAProxy Load Balancer...
>>>>>> *Jul 24 22:35:03 ha1 systemd[1]: Started HAProxy Load Balancer.*
>>>>>>
>>>>>> Jul 24 22:35:03 ha1 haproxy-systemd-wrapper[13213]:
>>>>>> haproxy-systemd-wrapper: executing /usr/sbin/haproxy -f
>>>>>> /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
>>>>>>
>>>>>> Ok. What...the...heck!!
>>>>>>
>>>>>> So why do you think that haproxy is only happy starting up on port
>>>>>> 80? I
>>>>>> would think that I should be able to specify any arbitrary port for
>>>>>> it to
>>>>>> listen on in a 'listen' sub-block.
>>>>>>
>>>>>> I guess I could have my app contact the database using port 80. But
>>>>>> that's
>>>>>> a little... weird. I installed haproxy using yum from the 'updates'
>>>>>> repository. Is there any reason anyone can think of as to why haproxy
>>>>>> refuses to start on any port other than port 80??
>>>>>>
>>>>>> Thanks,
>>>>>> Tim
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, Jul 24, 2015 at 4:59 PM, Nenad Merdanovic <ni...@nimzo.info>
>>>>>> wrote:
>>>>>>
>>>>>>   Hello Tim,
>>>>>>
>>>>>>>        On Fri, Jul 24, 2015 at 1:46 PM, Tim Dunphy <
>>>>>>> bluethu...@gmail.com
>>>>>>>
>>>>>>>>       <mailto:bluethu...@gmail.com>> wrote:
>>>>>>>>           listen mysql-cluster
>>>>>>>>               bind 127.0.0.1:3306 <http://127.0.0.1:3306>
>>>>>>>>
>>>>>>>>               mode tcp
>>>>>>>>               option mysql-check user haproxy_check
>>>>>>>>               balance roundrobin
>>>>>>>>               server mysql-1 10.10.10.10:3306 <
>>>>>>>> http://10.10.10.10:3306>
>>>>>>>>
>>>>>>>>  check
>>>>>>>
>>>>>>>                server mysql-2 10.10.10.11:3306 <
>>>>>>>> http://10.10.10.11:3306>
>>>>>>>>
>>>>>>>>  check
>>>>>>>
>>>>>>>            Jul 24 03:44:18 ha1 haproxy-systemd-wrapper[25034]:
>>>>>>>> [ALERT]
>>>>>>>>           204/034418 (25035) : *Starting proxy mysql-cluster:
>>>>>>>> cannot bind
>>>>>>>>           s...:3306]*
>>>>>>>>
>>>>>>>>  Can you check if something is listening on 127.0.0.1:3306
>>>>>>> (netstat, ss,
>>>>>>> lsof)? For example:
>>>>>>> ss -lpt | fgrep 3306
>>>>>>>
>>>>>>> Regards,
>>>>>>> Nenad
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>
>>>
>>
>>
>> --
>> GPG me!!
>>
>> gpg --keyserver pool.sks-keyservers.net --recv-keys F186197B
>>
>>

Reply via email to